Эма Кросс! - страница 55

 

Ema_cross_2

Уважаемый codersguru,

Спасибо за ваш советник и вашу концепцию контртренда,

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

Мы все еще продолжаем тестировать EMA_CROSS_2 на таймфрейме H1, но мы обнаружили кое-что интересное в паре EUR/USD 03 апреля 2006, после пересечения вниз, этот советник открывает позицию на продажу вместо позиции на покупку.... это нормальное действие? (см. вложение)

Спасибо...

dedywind

 

7

Привет, Флокс,

Я написал 10 советников для конкурса, но их оказалось слишком много для тестирования.

Поэтому я отберу 3 из них на конкурс, а 7 представлю здесь Они приносят прибыль в форвард-тестах.

Надеюсь, вам понравится!

 

Кодеры,

Я вернусь и прочитаю всю тему, но я не могу вспомнить, было ли это затронуто.

Когда вы закрываете платформу, будь то InterbanFX, MT4, и т.д., я заметил, что если я не в позиции, и у меня установлен последний советник MA, он будет автоматически исполнять сделку.

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

спасибо

 

Новичку нужна помощь с советником MA cross EA...

codersguru:
амарнат,

Вот мой отчет (прилагается)!

А это версия, которую я использовал (прилагается)!

Я думаю, что мы не можем ретранслировать только на бэктесте. Но в моем тесте я использовал дату от 2005/01/01 до сегодняшнего дня!

Кто-нибудь тестировал MoneyMaker?

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

Я немного модифицировал ваш оригинальный советник EMA_Cross, чтобы он работал с пересечением 5 EMA и 10 LWMA с фильтром RSI и Stochastic. Хотя этот советник правильно открывает ордера LONG и SHORT и закрывает их, он не позволяет мне одновременно закрывать позицию и тут же открывать новую позицию в противоположном направлении (например: истинная техника торговли "свинг"). Таким образом, я теряю большое количество потенциальных свинговых сделок.

Кроме того, иногда условия пересечения EMA1 > WMA1 и EMA2 < WMA2 могут не вызвать покупку, если две скользящие средние за последний период имели одинаковое значение или находились в пределах 1-2 пунктов друг от друга. Таким образом, я хотел бы добавить код для поиска такого условия (что часто случается), чтобы вызвать вход.

Я не кодер, поэтому я надеялся, что вы поможете мне понять, как это сделать.

Я включил свой код в строку ниже, а также файл MQ4 в качестве вложения. Любая помощь будет очень, очень признательна!

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

//| 5/10 MA Cross w RSI and Stoch Filter | |

//| Ian Boersma - Copyright 2006 |

//| |

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

#property copyright "Ian Boersma"

//---- входные параметры

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

extern int ShortEma = 5;

extern int LongWma = 10;

extern int RSIPer = 14;

extern int StochK = 10;

extern int StochD = 3;

extern int StochSlow = 3;

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

//| функция инициализации эксперта |

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

int init()

{

//----

//----

return(0);

}

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

//| функция деинициализации эксперта | |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Функция запуска эксперта +

//| Здесь мы инициализируем внутренние переменные для использования в программе + |

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

int start()

{

//----

// Объявления LotCalc

int cnt, ticket, total;

//Объявления переменных ММА и фильтров

double RSI;

double Stoch;

double EMA1,EMA2,WMA1,WMA2;

if(Bars<100)

{

Print("баров меньше 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit меньше 10");

return(0); // проверяем TakeProfit

}

//Определение переменных ЕМА и фильтра

EMA1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

WMA1 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,0);

EMA2 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

WMA2 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,1);

RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0);

Stoch = iStochastic(NULL,0,StochK,StochD,StochSlow,MODE_SMA,0,MODE_MAIN,0);

int isCrossed = 0;

if (EMA1 > WMA1 && EMA2 = 50 && Stoch < 80)

{ isCrossed = 1;

}

if (EMA1 = WMA2 && RSI 20)

{isCrossed = 2;

}

//Проверяем торговый терминал на предмет его пустоты

total = OrdersTotal();

if(total < 1) //Если торговый терминал пуст...

{

if(isCrossed == 1) //Если крест указывает на LONG swing...

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,0,Ask+TakeProfit*Point, "My EA",12345,0,Yellow);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер BUY : ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера BUY : ",GetLastError());

return(0);

}

if(isCrossed == 2) //если крест указывает на SHORT swing...

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(" Открытордер SELL: ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера SELL : ",GetLastError());

return(0);

}

return(0);

}

//Функция выхода из позиции...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // длинная позиция открыта

{

// Проверяем, есть ли у нас условие пересечения SHORT...

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // закрываем позицию

return(0); // выход

}

// Проверяем наш трейлинг-стоп, чтобы узнать, нужно ли его корректировать

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // переходим в короткую позицию

{

// Проверяем, есть ли у нас условие пересечения LONG...

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // закрываем позицию

return(0); // выход

}

// Проверяем наш трейлинг-стоп на необходимость корректировки

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

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

 
iboersma:
Привет CodersGuru,

Я немного модифицировал ваш оригинальный советник EMA_Cross, чтобы он работал с пересечением 5 EMA и 10 LWMA с фильтром RSI и Stochastic. Хотя этот советник правильно открывает ордера LONG и SHORT и закрывает их, он не позволяет мне одновременно закрывать позицию и затем сразу же открывать новую позицию в противоположном направлении (например: истинная техника торговли "свинг"). Таким образом, я теряю большое количество потенциальных свинговых сделок.

Кроме того, иногда условия пересечения EMA1 > WMA1 и EMA2 < WMA2 могут не вызвать покупку, если две скользящие средние за последний период имели одинаковое значение или находились в пределах 1-2 пунктов друг от друга. Таким образом, я хотел бы добавить код для поиска такого условия (что часто случается), чтобы вызвать вход.

Я не кодер, поэтому я надеялся, что вы поможете мне понять, как это сделать. ....

Я проверю это!

 
codersguru:
Я проверю это!

Спасибо за помощь...

- Ян

 
codersguru:
Я проверю это!

CodersGuru,

Я приложил более новую версию моего советника, так как заметил проблему с определением условия 'isCrossed' (я пытался добавить фильтры RSI и Stoch к оригинальному условию isCrossed, а не добавлять их как классификатор только для входа в позицию.

Надеюсь, это имеет больше смысла...

- Ян

 
iboersma:
Спасибо за помощь... - Ян

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

Файлы:
 
codersguru:
Я думаю, что пункт 1 работает (когда закрывается покупка, открывается продажа и когда закрывается продажа, открывается покупка) Посмотрите на прикрепленный тест.

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

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

- Ян

 
gody6000:
это 2-я неделя lolhttp://9q9q.com/March/1144348631.zip

Простите! Но что это такое?

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