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

 
Mastercash:
Я установил параметр use moneymanagement на false...., но что касается параметров Lots, дело не в Lots, а в количестве открытых ордеров. Я не хочу, чтобы ea открывала более 5 ордеров...... в определенное время, поэтому я установил параметр NumberofTrades на 5, на входных параметрах, но она все равно будет дерзить мне, и брать более 5 ордеров, тем самым угрожая моим moneymanagements!

Mastercash

Это результат тестирования:

Как вы можете видеть, он никогда не открывал более 5 ордеров на один и тот же символ и один и тот же магический номер в одно и то же время.

Файлы:
5_test.gif  87 kb
 

Хорошо, я вижу... Я просто не хочу, чтобы он принимал более 5 ордеров для разных символов.... Например, допустим, есть торговые сигналы от 10 символов в течение последних 20 минут.... ea должна принять только первые 5 торговых сигналов, затем, когда любой из этих пяти ордеров закроется, он может принять еще один, убедившись, что текущие ордера по разным символам не превышают 5. Но он продолжает превышать 5, не важно..... Иногда он принимает 5 одинаковых ордеров от одного и того же символа, что тоже неправильно.

mladen:
Mastercash

Это результат тестирования:

Как вы можете видеть, он никогда не открывал более 5 ордеров для одного и того же символа и одного и того же магического номера в то же время.
 
Mastercash:
Хорошо, я вижу... Я просто не хочу, чтобы он брал более 5 ордеров для разных символов.... Например, допустим, есть торговые сигналы от 10 символов в течение последних 20 минут.... советник должен взять только первые 5 торговых сигналов, затем, когда любой из этих пяти ордеров закроется, он может взять еще один, убедившись, что текущие ордера по различным символам не превышают 5. Но он продолжает превышать 5, неважно..... Иногда он берет 5 одинаковых ордеров от одного и того же символа, что тоже неправильно.

Если вы хотите, чтобы у него было максимум 5 ордеров на всех символах, перейдите к строке 144(if( OrderSymbol() != Symbol() ) continue;) и удалите ее. И сохраните магическое число для всех экземпляров на всех символах одинаковым (чтобы он мог считать ордера, открытые только этим советником на всех символах).

 

Привет Младен

У меня есть хороший инди, который не обновляется при установке на более высоком ТФ.

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

Я добавил индикатор и скриншот

 
wolfsch:
Привет Младен

У меня есть хороший инди, который не обновляется при установке на более высоком ТФ.

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

Я добавил индикатор и скриншот

wolfsch

Это может произойти только при визуальном бэктесте (это ошибка, которую metatrader не исправлял в течение как минимум 7-8 месяцев, и это ошибка metatrader, а не индикатора), и это происходит со всеми многотаймфреймовыми индикаторами при визуальном бэктесте.

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

 

Спасибо, я поработаю над этим и свяжусь с вами.......

mladen:
Если вы хотите, чтобы у него было максимум 5 ордеров на всех символах, перейдите к строке 144(if( OrderSymbol() != Symbol() ) continue;) и удалите ее. И сохраните магическое число для всех экземпляров на всех символах одинаковым (чтобы он мог считать ордера, открытые только этим советником на всех символах).
 
mladen:
TFI

Буфер 3 является правильным (это буфер "тренда", который имеет значения 1 для восходящего наклона и -1 для нисходящего наклона). Вы используете сдвиги 1 и 2, следовательно, он тестирует 1-й закрытый бар.

Часть кода на покупку в порядке.

Вы пропустили

if(trendc!=trendp)

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

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

большое спасибо за помощь. Я изменил код в соответствии с

в соответствии с Вашим предложением, торговля идет гладко, расчет пунктов также в порядке.

Но теперь он больше не открывает короткие сделки (возможно, это тоже стратегия ;-)).

Он просто закрывает длинные позиции.

Не могли бы вы посоветовать еще раз?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

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

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

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

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Пожалуйста, смотрите прикрепленный скриншот для деталей.

Заранее благодарю!

С наилучшими пожеланиями,

TFI

Файлы:
backtest.jpg  163 kb
 
tfi_markets:
Здравствуйте Младен,

Большое спасибо за помощь. Я изменил код в соответствии с

в соответствии с вашим предложением, торговля идет гладко, расчет пунктов также в порядке.

Но теперь он больше не открывает короткие сделки (возможно, это тоже стратегия ;-)).

Он просто закрывает длинные позиции.

Не могли бы вы посоветовать еще раз?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//+-----------------------------------------------------+

//| BUY |

//+-----------------------------------------------------+

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

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

//+----------------------------------------------------+

//| SELL |

//+----------------------------------------------------+

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

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Пожалуйста, смотрите прикрепленный скриншот для деталей.

Заранее благодарю!

С наилучшими пожеланиями,

TFI

TFI

Попробуйте сделать что-то вроде этого:

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//

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

int clongs = 0;

int cshorts = 0;

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

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

 

mladen,

Я сделал изменение в номере 144 и унифицировал магическое число, "MagicNumber" для всех инструментов....It теперь принимает максимум 5 сделок за раз, но теперь он повторяет сделки на том же символе в то же время, например, если получить торговый сигнал SELL на EURUSD, он будет размещать этот EURUSD ордер на продажу 5 раз. Смотрите изображение живого ордера, который он так выставил:

Mastercash:
Спасибо, я поработаю над этим и свяжусь с вами.......
Файлы:
apcorrimage.png  39 kb
 
Mastercash:
mladen, я сделал изменение в номере 144 и я унифицировал магическое число, "MagicNumber" по всем символам инструментов....It теперь принимает максимум 5 сделок за раз, но он теперь повторяет сделки на том же символе в то же время, например, если получить торговый сигнал SELL на EURUSD, он будет размещать этот EURUSD ордер на продажу 5 раз. Смотрите изображение живого ордера, который он выставил таким образом:

Это не зависит от этой части кода.

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

Причина обращения: