Помощь в кодировании - страница 18

 

Получение ошибки в советнике Требуется помощь

Получение только 1 сделки

Мне нужны все сделки, которые генерируются в icustom ARROW

но

extern string Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int start()

{

if(newbar==Time[0])return(0); //

else newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

return(0);

}

Файлы:
ea.png  22 kb
 

Это прекрасно! .... поэзия на форекс форуме lol

 
В вашем советнике это условие

OrdersTotal()==0

предотвращает открытие более 1 ордера за раз. Если вы хотите открыть более 1 ордера, удалите это условие, но вам придется добавить код, чтобы избежать открытия нескольких ордеров на одном и том же баре (иначе у вас будет миллион открытых ордеров). Вы можете использовать функцию, которая будет выглядеть примерно так :

int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

for(int i=0; i < OrdersTotal(); i++)

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

и тогда ваше полное условие (для покупки) будет выглядеть следующим образом:

[PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)

Это предотвратит открытие нескольких ордеров на одном и том же баре (этот код не проверяет тип ордера, уже открытого на текущем баре, если вы хотите проверить и это, вам придется добавить еще несколько условий).

vegadigitalco:
Получение только 1 сделки

Мне нужна вся торговля, которая генерируется в icustom ARROW

но

extern string Symbol_1 = "EURUSD";

int magic=9503;

return(0);

int deinit()

{

return(0);

}

datetime newbar;

int start()

{

if(newbar==Time[0])return(0); //

else newbar=Time[0];

double ArrowUp = iCustom(NULL,0, "NBO-System_v1",2,1,10000,2,1);

double ArrowDown = iCustom(NULL,0, "NBO-System_v1",2,1,10000,3,1);//PERIOD_M5

if (ArrowDown >0 && ArrowDown!=2147483647 && OrdersTotal()==0)//!= EMPTY_VALUE )

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

}

if (ArrowUp >0 && ArrowUp!=2147483647 && OrdersTotal()==0)

{

OrderSend(Symbol_1,OP_SELL,0.1, MarketInfo(Symbol_1,MODE_BID), 2, NULL, NULL, "RapidFire", magic, NULL,LimeGreen );

}

return(0);

}
 

Большое спасибо за HELPPPPPPPPPPPPPPPPPPPPPPP

Очень очень очень очень очень очень для HELPPPPPPPPPPPPPPPPP

Очень очень очень очень очень очень очень очень для HELPPPPPPPPPPPPP

Очень очень очень очень очень очень очень очень очень очень очень для HELPPPPPPPPPPPPPPPP

Очень много для HELPPPPPPPPPPPPPPP

mladen:
В вашем советнике это условие

OrdersTotal()==0

если вы хотите открывать более 1 ордера за раз, удалите это условие, но вы должны добавить код, чтобы избежать открытия нескольких ордеров на одном и том же баре (иначе вы закончите с миллионом открытых ордеров). Вы можете использовать функцию, которая будет выглядеть примерно так :
int countOpenedOnACurrentBar()

{

int openedAtBar = 0;

datetime startTime = Time[0];

datetime endTime = Time[0]+Period()*60;

for(int i=0; i < OrdersTotal(); i++)

{

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;

if(OrderMagicNumber() != MagicNumber) continue;

if(OrderSymbol() != Symbol()) continue;

if(OrderOpenTime()=endTime) continue;

openedAtBar++;

break;

}

return(openedAtBar);

}

[/PHP]

и тогда ваше полное условие (для покупки) будет выглядеть следующим образом:

[PHP]if (ArrowDown >0 && ArrowDown!=2147483647 && countOpenedOnACurrentBar()==0)
Это предотвратит открытие нескольких ордеров на одном и том же баре (этот код не проверяет тип ордера, уже открытого на текущем баре, если вы хотите проверить и это, вам придется добавить еще несколько условий).
Файлы:
 

баланс - это бэк-тест, тестирование в реальном времени или баланс на реальных деньгах.

EA никогда не приходила мне в голову, так как полуавтоматические входы - это хорошо и достаточно круто (полу означает дополнительное препятствие, когда вы размещаете ордер, как fly-by-wire, компьютер может признать ваши входы недействительными).

но ticks-ease - это как огненное кольцо в видеоигре, есть только несколько мест в кольце в любой момент времени, в которые вы можете попасть, другие сожгут вас довольно легко --- это не состояние рынка в последние 5-10 месяцев, хотя, все становится проще.

хочу прочитать код в советнике выше - но эти коды за пределами моего понимания.

 

нужен алерт в кодированной выше торговле

Здравствуйте, Младен,

спасибо за вашу уникальную поддержку

Еще одна вещь, как я могу добавить код оповещения на покупку или продажу, сгенерированный в вышеуказанном коде, который вы предложили.

В реальном рынке он не закрывает покупку или продажу, он просто создает новую сделку.

Заранее спасибо

 

...

Попробуйте сделать что-то вроде этого (это пример только для покупки)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

vegadigitalco:
Здравствуйте mladen,

спасибо за вашу уникальную поддержку для меня

еще одна вещь, как я могу добавить код оповещения на покупку или продажу, сгенерированный в вышеуказанном коде, который вы предложили.

в живом рынке он не закрывает покупку или продажу, он просто создает новую сделку.

спасибо заранее
 

Не могли бы вы поделиться здесь своей ea? Мне очень нравится, как ea ведет торговлю.

 

Здравствуйте, mLaden,

Спасибо еще раз за вашу большую помощь:)

осталась только одна проблема

в реальном рынке он не закрывает предыдущую позицию на покупку или продажу, он просто создает новую сделку. ???

Спасибо в ADV

mladen:
Попробуйте что-нибудь вроде этого (это пример только для покупки)
if (ArrowDown >0 && ArrowDown!=2147483647 &&countOpenedOnACurrentBar()==0)

{

OrderSend(Symbol_1,OP_BUY,0.1, MarketInfo(Symbol_1,MODE_ASK), 2, NULL, NULL, "RapidFire", magic, NULL, FireBrick);

if (!IsTesting()) Alert(Symbol_1+" BUY ordere opened at "+TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS));

}

 

...

vegadigitalco

Для этого вам нужно добавить логику закрытия в советник. Либо используйте тейк-профит и стоп-лосс, либо используйте явный OrderClose(), основанный на некоторых правилах выхода.

vegadigitalco:
Здравствуйте, mLaden,

Еще раз спасибо за помощь:)

осталась только 1 проблема

в реальном рынке он не закрывает предыдущую позицию на покупку или продажу, он просто создает новую сделку. ???

Спасибо в ADV