Как кодировать? - страница 77

 

Ichimoku Kinko Hyo Cross открывает только покупки!

Привет всем,

Последние несколько недель я занимался программированием и продвигался достаточно хорошо. Но я дошел до точки, где моя последняя довольно простая система, которую я пытаюсь закодировать, не работает для меня. Я переписывал ее около пяти раз, используя другой код, пробовал строить советников, изменять другие кросс-стратегии и т.д., но система всегда открывает только сделки на покупку. (Среди других проблем, которые у меня есть) Любая помощь была бы очень признательна, так как кажется, что это может быть прибыльная система. (Все так думают, когда программируют, но ручные бэктесты по барам показывают положительный результат).

СИСТЕМА: Построение графика

Индикатор Ichimoku Kinko Hyo с настройками по умолчанию 9,26,52. Показывать только Тенкан-сен и Киджун-сен, скрыть линии Сенкоу и Чикоу.

ПЕРВЫЙ ВХОД (объясняется для длинных позиций/покупки - то же самое относится и к продаже в противоположном направлении)

Tenkan-Sen пересекает Kijun-Sen и цена находится выше KIJUN-Sen. Stop loss на сумму спреда пары ниже Tenkan-Sen. Trail со стопом на Kijun-Sen - спред в пунктах, пока не появится обратный сигнал (где вы закроетесь).

RE-ENTRY (иногда несколько сделок останавливаются, прежде чем поймать "большую поездку".

Если стоп-лосс сбит, до пересечения Тенкан-сен и Киджун-сен позиция может быть открыта снова, если цена закроется выше Тенкан-сен, а Тенкан-сен все еще выше Киджун-сен. Стоп-лосс как и раньше.

РЕЗЮМЕ

Входите в длинную позицию, когда Тенкан-сен пересекается выше Киджун-сен. Стоп-лосс на расстоянии спреда ниже Киджун-сен. Если стоп-лосс выставляется до пересечения и происходит разворот, можно снова войти в длинную позицию, если цена поднимается выше Тенкан-сен. Тейк-профита нет, просто отслеживайте стоп-лосс по Киджун-сен.

Эта система склонна к трендам, но потери не должны быть слишком большими на рынках, ограниченных диапазоном. Я планирую торговать на дневных ТФ, но возможно и на других, когда я запущу Эксперт. На самом деле, на некоторых рынках, которые я тестировал, советник прибылен уже сейчас, еще до того, как он работает должным образом!

MQ4 прилагается, если кто-то может расшифровать, где я ошибаюсь!

Спасибо,

Говард

P.S. Было бы здорово получить помощь по этому вопросу, так как у меня сегодня День Рождения и было бы очень приятно получить помощь!

Я также прошу прощения у всех практикующих Ичимоку, которые считают, что его нельзя автоматизировать, поскольку он предназначен для торговли на рынке "с первого взгляда". Однако я считаю, что индикатор настолько замечательный, особенно Kijun-Sen, который торгуется как раз за пределами откатов во многих длинных трендах, что он идеально подходит для автоматизации!

Файлы:
ikh_pro.mq4  5 kb
 
gmax111:
я пишу советника, который покупает и продает кроссы EMA... Я хочу фильтровать его, проверяя, были ли закрытия последних 10 баров выше EMA перед покупкой... кто-нибудь может мне помочь?????

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

 
Michel:

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

Спасибо большое за это Мишель...

Это была одна из тех вещей, которые ставили меня в тупик, но теперь я чувствую себя дураком из-за того, что слишком много думал... хаха... ЕЩЕ РАЗ СПАСИБО!!!

 

Как кодировать!!!

Я думаю, что этот Ea очень хорош...

Но открывается только один заказ в одной паре...почему?

 

В Адрию

adria

Я заинтересовался вашей проблемой и поиграл с ней.

Похоже, что вам нужно сделать что-то вроде этого:

Сначала объявите Var1, Var2 глобально.

Затем попробуйте сделать следующее:

if (Hour() == 12) Var1 = iHigh(NULL,0,1);

if (Hour() == 12) Var2 = iLow(NULL,0,1);

Навигатор Metaeditor дает объяснение Hour().

Дополнительные примеры можно найти в TSD по запросу "торговые часы".

Если ваш советник многообещающий, не могли бы вы прислать мне копию?

Big Be

 

To Big Be

Я создал аналогичный советник. Вы должны изменить значение TIME в соответствии с вашим

времени графика.

Файлы:
 

нужна помощь с этой функцией closealltrades

Я заметил, что брокер иногда реквотирует цену, в результате чего советник не закрывает

ордер. Как я могу предотвратить продолжение работы советника до тех пор, пока все ордера в соответствии с его магическим числом не будут закрыты?

его магического числа закрыты, может быть, поставить функцию sleep на 5 секунд и

цикл while для проверки и закрытия ордеров перед продолжением. Ниже приведена

функция closealltrades. Заранее благодарен за помощь и спасибо.

void CloseAllTrades()

{

int rc;

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Ошибка закрытия="+GetLastError());

}

}

}

 
hedge4x:
Я заметил, что брокер иногда реквотирует цену, в результате чего советник не закрывается.

ордер. Как я могу предотвратить продолжение работы советника до тех пор, пока все ордера согласно

его магического числа закрыты, возможно, поставить функцию sleep на 5 секунд и

цикл while для проверки и закрытия ордеров перед продолжением. Ниже приведена

функция closealltrades. Заранее благодарен за помощь и спасибо.

void CloseAllTrades()

{

int rc;

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Ошибка закрытия="+GetLastError());

}

}

}

bool IsAllClosed ; //Global variable

void CloseAllTrades()

{

int cnt;

IsAllClosed = true;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

IsAllClosed = IsAllClosed && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(!IsAllClosed) {CloseAllTrades(); return;}

...

 

спасибо

Спасибо, Мишель, за помощь.

Я попробую это сделать.

 

Эта строка while(!IsAllClosed) {CloseAllTrades(); return;}

в главном запуске закроет все открытые позиции, если MT упадет

и я запущу его снова. Есть ли способ поместить эту строку

в функцию closealltrades, чтобы она не закрывала все открытые позиции

после перезапуска MT4?

спасибо.