Double Force EA

demetrion

Новичок форума
Ну, вроде D-Force36 с мартином 1.15 более, менее приемлем, чем с мартином 1.2, так как мартин нарастающий, он свое возьмет и лучше повышать лот, чем мартина. Торгую пока с 1.15 на реале, хотя последние совы практически пропорционально увеличивают как прибыль, так и просадку и начальный депо с 1000-1500 поднялся до 1500-2000 в последних 2х совах.
 
Последнее редактирование:

ansol

Местный знаток
Ну, вроде D-Force36 с мартином 1.15 более, менее приемлем, чем с мартином 1.2, так как мартин нарастающий, он свое возьмет и лучше повышать лот, чем мартина. Торгую пока с 1.15 на реале, хотя последние совы практически пропорционально увеличивают как прибыль, так и просадку и начальный лот с 1000-1500 поднялся до 1500-2000 в последних 2х совах.

Я вам больше скажу - тест с мартином 1.1 проваливается уже 12-13 апреля при старте с 11 марта, что повергло меня в ступор :nda: Я просто не обратил внимание на то, что параметр стоял не по умолчанию, а остался с последнего эксперимента другим. Выставил на 1.2 - и всё великолепно прошло. Проверил также на 1.25 - стало резко лучше, а на 1.3 точно так же провалило тест.
Это всё на EURUSD и дефолтных всех остальных параметрах. Поэтому параметры для других пар нажно подбирать или "помогать" сове дополнительно выставляемыми вручную ордерами, чтобы она не улетела к дяде Коле в гости. И да, время работы - обратите внимание на него! Если сова не будет иметь возможности торговать какое-то время, то результат будет приницпиально иным. В исходной сове предлагалось не торговать одну сессию, кажись, в азиатскую - надо заглянуть в исходный текст в топикстарте.
 

ansol

Местный знаток
Продолжаем наши изыскания.
На картинке результат с 01.04.16 по 01.10.16
Сова чуть поправлена - там у меня сомнения в некоторой конструкции из набора if'ов возникли, поэтому переписал то же самое, но более правильно.
В реальности это вряд ли когда-либо повлияет, но хрен его знает, этот рынок, пусть будет всё правильно совсем ;)

На встроенном тестере результат на 20% хуже и сделок меньше, зато проходит "опасную" зону 1.05-10.05 с мартингейлом 1.2.
На тиковом не хочет, но можно увеличить параметр "Шаг ордеров" до 11, тогда проходит, но результат хуже на 10% :not-bad:

Короче, ядерную войну всё равно не переживем - торги закроют :laugh:


* "Опасная" зона - начало мая, примерно 180-220 сделки на графике, там провал по свободным средствам хорошо виден. Так же лечится увеличением депо до 1500 - тоже спокойно проходит, если что.
 

Вложения

  • dforce37.gif
    dforce37.gif
    11,8 КБ · Просмотры: 226
  • D-Force37.mq4
    18,3 КБ · Просмотры: 318
Последнее редактирование:

Fed77

Гуру форума
Считаю достойный результат 70% в месяц на неправильном, менять ничё не хочу уже
 

digimatrix

Местный знаток
//************************ Ilan buy

void IlanBuy(double Multipler, double MaxLot, int StartLotExp, int AverageTP, double StepExp, int StartStepExp,int Step, int MaxOrder, int Magik )
{
double biggestlot=0;
double near_ord_price=999999;
double step_=0;
int ordersum_=0;
int Repeat=10;
double minlot=10000;
// calculate summe lots and last order open price
for (int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{

if ( near_ord_price > OrderOpenPrice()) near_ord_price = OrderOpenPrice();
if ( biggestlot < OrderLots()) biggestlot = OrderLots();
if ( minlot > OrderLots()) minlot = OrderLots();
ordersum_ +=1;

}}
else
{
Print("OrderSelect() ERROR Buy.code 15 ", ErrorDescription(GetLastError()));
}}
// *************************calculate and open buy order *****************************

step_=Step;
//------------------------------------------------------------------------------------------------------------------------
if ( ordersum_ >= StartStepExp ) { step_ = NormalizeDouble(step_ * MathPow(StepExp ,((ordersum_+1) - StartStepExp)),0); }
//------------------------------------------------------------------------------------------------------------------------

if (near_ord_price - Ask > step_*Point && near_ord_price != 999999 && ordersum_ < MaxOrder && ordersum_ > 0 )
{
//-------------------------------------------------------------------------

double new_lot = NormalizeDouble((biggestlot*Multipler) ,2);
if ( new_lot==biggestlot ) new_lot=minlot + biggestlot;
if (ordersum_ < StartLotExp ) new_lot=minlot;
if (new_lot > MaxLot ) new_lot=MaxLot;

//-------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------
int ticket = OrderSend(Symbol(), OP_BUY, new_lot, Ask, 2, 0, 0, "t", Magik, 0, Blue);
if ( ticket < 0 ) { Print("OrderSend() ERROR Buy.code 15 ", ErrorDescription(GetLastError()));}
//--------------------------------------------------------------------------------------------

// *******************************calculate TP ******************

double Lots_al =0;
double Average_lp =0;
double Average_tp =0;
for ( int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{
Lots_al += OrderLots();
Average_lp +=(OrderLots()*OrderOpenPrice());
}
}
else
{
Print("OrderSelect() ERROR Buy.code 15.1 ", ErrorDescription(GetLastError()));
}}
//************************************************
Average_tp= NormalizeDouble(Average_lp/Lots_al,Digits);
Average_tp=Average_tp+(AverageTP*Point);
// ********************** modify order *************************
double modify_sl=0;
double modify_tp=0;

for ( int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{ if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{

for (int ii=Repeat; ii >= 0; ii--)
{

//------------------------------------------------------------
if ( Average_tp < Ask ) {modify_sl=Average_tp; modify_tp=0; }
else {modify_sl=0; modify_tp=Average_tp;}
//------------------------------------------------------------
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), modify_sl, modify_tp, 0, Yellow);
if (ret == true ) break;
Print("OrderModify() ERROR Buy.code 15", ErrorDescription(GetLastError()));
Sleep(500);
while( !IsTradeAllowed() ) Sleep(100);
RefreshRates();
}
}}
else
{
Print("OrderSelect()ERROR Buy.code 15.2 ", ErrorDescription(GetLastError()));
}}}


}
//######## END Ilan buy





//********************** Ilan sell

void IlanSell(double Multipler, double MaxLot, int StartLotExp, int AverageTP, double StepExp, int StartStepExp,int Step, int MaxOrder, int Magik )
{
double biggestlot=0;
double near_ord_price=0;
double step_=0;
int ordersum_=0;
int Repeat=100;
double minlot=10000;


// calculate summe lots and last order open price
for (int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{
if ( near_ord_price < OrderOpenPrice()) near_ord_price = OrderOpenPrice();
if ( biggestlot < OrderLots()) biggestlot = OrderLots();
if ( minlot > OrderLots()) minlot = OrderLots();
ordersum_ +=1;
}
}
else
{
Print("OrderSelect() ERROR Sell.code 16 ", ErrorDescription(GetLastError()));
}}



// *************************calculate and open buy order *****************************

//------------------------------------------------------------------------------------------------------------------------
step_=Step;
if ( ordersum_ >= StartStepExp ) { step_ = NormalizeDouble(step_ * MathPow(StepExp ,((ordersum_+1) - StartStepExp)),0); }
//------------------------------------------------------------------------------------------------------------------------

if ( Bid - near_ord_price > step_*Point && near_ord_price != 0 && ordersum_ < MaxOrder && ordersum_ > 0 )
{
//------------------------------------------------------------
double new_lot = NormalizeDouble((biggestlot*Multipler) ,2);
if ( new_lot==biggestlot ) new_lot=minlot + biggestlot;
if (ordersum_ < StartLotExp ) new_lot=minlot;
if (new_lot > MaxLot ) new_lot=MaxLot;
//------------------------------------------------------------
//-------------------------------------------------------------------------------------------
int ticket = OrderSend(Symbol(), OP_SELL, new_lot, Bid,2 , 0, 0, "t", Magik, 0, Red);
if ( ticket < 0 ) { Print("OrderSend() ERROR Sell.code 16 ", ErrorDescription(GetLastError())); }
//-------------------------------------------------------------------------------------------

// *******************************calculate TP ******************

//------------------
double Lots_al=0;
double Average_lp=0;
double Average_tp=0;
//------------------

//-------------------------------------------------------------------------------------------
for ( int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{
Lots_al += OrderLots();
Average_lp +=OrderLots()*OrderOpenPrice();
}
}
else Print("OrderSelect() ERROR Sell.code 16.1", ErrorDescription(GetLastError()));
}
//---------------------------------------------------------------------------------------------

// ********************** modify order *************************

//-----------------------------------------------------
Average_tp= NormalizeDouble(Average_lp/Lots_al,Digits);
Average_tp=Average_tp-AverageTP*Point;
double modify_sl=0;
double modify_tp=0;
//-----------------------------------------------------

for ( int i=OrdersTotal()-1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magik)
{

for (int ii=Repeat; ii >= 0; ii--)
{
//-----------------------------------------------------------
if ( Average_tp > Bid ) {modify_sl=Average_tp; modify_tp=0; }
else {modify_sl=0; modify_tp=Average_tp; }
//-----------------------------------------------------------
bool ret = OrderModify(OrderTicket(), OrderOpenPrice(), modify_sl, modify_tp, 0, Yellow);
if (ret == true ) break;
Print("OrderModify() ERROR Sell.code 16 ", ErrorDescription(GetLastError()));
Sleep(500);
while( !IsTradeAllowed() ) Sleep(100);
}
}
}
else Print("OrderSelect() ERROR Sell.code 16.2 ", ErrorDescription(GetLastError()));
}
}

}
//########## END Ilan sell
 
Последнее редактирование модератором:

ыукпуе

Интересующийся
Подскажите, советник использует для выведения ордеров в прибыль все имеющиеся ордера со всех графиков на которые установлен или только на одном графике?
 

ansol

Местный знаток
Подскажите, советник использует для выведения ордеров в прибыль все имеющиеся ордера со всех графиков на которые установлен или только на одном графике?

Работает только там, где установлен, поэтому надо самому учитывать, сколько каждому потребуется процентов от депо на сопровождение, он не знает о существовании других советников на других графиках.
 

tiras

Новичок форума
D-Force37 & zig_zag_nrp

вариант D-Force37 с другим ЗигЗагом - zig_zag_nrp , который "не рисует".
предлагаю совместно потестить
 

Вложения

  • D-Force37_zz_nrpt.mq4
    18,4 КБ · Просмотры: 176
  • zig_zag_nrp.ex4
    3,6 КБ · Просмотры: 166

ansol

Местный знаток
вариант D-Force37 с другим ЗигЗагом - zig_zag_nrp , который "не рисует".
предлагаю совместно потестить

Вы логику совы изменили? Там логика прописана для оригинального зигзага и с любым нерисующим будет работать немного не в тему.
 

tiras

Новичок форума
Вы логику совы изменили? Там логика прописана для оригинального зигзага и с любым нерисующим будет работать немного не в тему.


логику не менял . сигнал на вход остался тем-же . заменил только сигнал штатного зигзага на нерисующий .
 

Fed77

Гуру форума
35-я версия снизил риск до 3-х % на каждую пару.
 

Fed77

Гуру форума
Сначала были сомнения насчёт 35 версии но после того как утроился за 3 месяца теперь нет сомнений, поставил на реал, аминь
 

ansol

Местный знаток
Провожу эксперимент с AUDUSD при паралельной работе по EURUSD.
Вероятно, на выходных прогоню тестером за полгода. Визуально, пара не коррелирует с евробаксом, в отличие от NZDUSD и USDCHF. С фунтом связываться боюсь - че-то он себя в связи в брекзитом неадекватно стал вести :)
Вероятно, еще стоит канадца попробовать, не?
Я к тому, что не стоит замыкаться на одной паре, а изобразить некое "хеширование" путем одновременной работы по нескольким парам, но по кроссам спред у всех резко больше, не так интересно, мне кажется.
 

Fed77

Гуру форума
Провожу эксперимент с AUDUSD при паралельной работе по EURUSD.
Вероятно, на выходных прогоню тестером за полгода. Визуально, пара не коррелирует с евробаксом, в отличие от NZDUSD и USDCHF. С фунтом связываться боюсь - че-то он себя в связи в брекзитом неадекватно стал вести :)
Вероятно, еще стоит канадца попробовать, не?
Я к тому, что не стоит замыкаться на одной паре, а изобразить некое "хеширование" путем одновременной работы по нескольким парам, но по кроссам спред у всех резко больше, не так интересно, мне кажется.
можно эти кроссы попробовать отметил спред красным цветом.
Фунт нормально с еврой вот отчёт с демки
 

Вложения

  • 88.jpg
    88.jpg
    238,5 КБ · Просмотры: 150
Последнее редактирование:
Верх