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

 
Audio:
VIVA codersguru !!!! ---Hi hellkas где ты, рад видеть этих друзей.

Привет, Аудио мой друг...

Этот советник действительно фантастический... Большое спасибо SuperCodersGuru...

У меня простой вопрос...

Я тестировал этот советник v2 и заметил кое-что странное...

У меня 4 разные настройки на разных платформах, но все на одном брокере (NorthFinance), Вчера у меня была открыта только одна позиция и я подумал, что это нормально... сегодня та же позиция все еще открыта и я подумал, что это странно... Я перезапустил платформу, и новые позиции открылись.

Почему советник останавливает торговлю, пока я не перезапущу платформу?

Спасибо

Файлы:
emacross.htm  22 kb
 

Некоторые замечания

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

Продолжайте в том же духе, Гуру!

 

Возможность реверса!

Hendrick:
Я все еще использую этот советник. Я заметил, что большинство проигрышей приходится на сделки против тренда. Возможно ли сделать опцию в этом советнике, которая бы размещала только те сделки, которые следуют за трендом? Продолжайте хорошую работу Гуру!

Хендрик,

Эта опция уже включена!

Просто установите опцию разворота на false, если вы хотите следовать за трендом!

 

Упс!

codersguru:
Хендрик,

Эта опция уже включена!

Если вы хотите следовать за трендом, просто установите для параметра reversaloption значение false!

Упс. Простите, Гуру.

 
hellkas:
Привет Аудио мой друг...

Этот советник действительно фантастический... Большое спасибо SuperCodersGuru...

У меня простой вопрос...

Я тестировал этот советник v2 и заметил кое-что странное...

У меня 4 разные настройки на разных платформах, но все на одном брокере (NorthFinance), Вчера у меня была открыта только одна позиция и я подумал, что это нормально... сегодня та же позиция все еще открыта и я подумал, что это странно... Я перезапустил платформу, и новые позиции открылись.

Почему советник останавливает торговлю, пока я не перезапущу платформу?

спасибо

Привет, давно не виделись, где вы были? Я думаю, codersguru сможет ответить лучше. спасибо.

 

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

У меня есть идея для вашего советника. Я бы хотел сделать его как можно проще, убрав TP, TS и SL! Да, я знаю, безумие!

Тогда просто позвольте ему торговать по МА между пересечениями.

1, При пересечении вверх, подождите один бар и идите в лонг.

2, На следующем пересечении вниз закрываем сделку.

3, Подождите еще один бар и, если МА все еще вниз, откройте короткую сделку.

Единственное, что нужно установить, это размер лота.

При открытой сделке, как только MA's пересекутся в обратном направлении, немедленно закрывайте сделку.

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

Возможно, это звучит безумно, но при заключении сделок вы будете полагаться исключительно на действие цены без каких-либо внешних воздействий. По сути, рынок будет торговать сам по себе!

Было бы интересно поиграть с таймфреймами и настройками MA.

Пока что я установил опции для отключения TP, SL и TS.

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

//| EMA_CROSS.mq4 |

//| Coders Guru |

//| https://www.mql5.com/en/forum |

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

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

//| TODO: Добавить процедуру управления деньгами | //| TODO: Добавить процедуру управления деньгами.

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

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

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

extern double TakeProfit=300;

extern bool UseTakeProfit = false;

extern double Lots=1;

extern double TrailingStop=15;

extern bool UseTrailingStop = false;

extern double StopLoss=100;

extern bool UseStopLoss = false;

extern int ShortEma = 10;

extern int LongEma = 80;

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

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

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

bool isNewSymbol(string current_symbol)

{

//перебираем все открытые ордера и сравниваем символы

int total = OrdersTotal();

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

Print("OrderSymbol = " + OrderSymbol() + ": Symbol = " + current_symbol);

string selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol)

return (False);

}

return (True);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//Не работает при первой загрузке, дождитесь первого пересечения!

static bool first_time = true;

if(first_time == true)

{

first_time = false;

return (0);

}

if(line1>line2)current_direction = 1; //up

if(line1<line2)current_direction = 2; //вниз

if(current_direction != last_direction) //changed

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (0); //не изменено

}

}

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

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

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

int start()

{

//----

int cnt, ticket, total;

double SEma, LEma;

if(Bars<100)

{

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

return(0);

}

if(TakeProfit<10)

{

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

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

}

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

LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

static int isCrossed = 0;

isCrossed = Crossed (LEma,SEma);

total = OrdersTotal();

if(total < 1 || isNewSymbol(Symbol()))

{

if(isCrossed == 1 )

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point, "EMA_CROSS",12345,0,Green);

else

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "EMA_CROSS",12345,0,Green);

if(ticket>0)

{

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

}

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

return(0);

}

if(isCrossed == 2)

{

if(UseStopLoss)

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point, "EMA_CROSS",12345,0,Red);

else

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "EMA_CROSS",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) // длинная позиция открыта

{

// должна ли она быть закрыта?

/* УДАЛЕНО - Трейлинг стоп только закрытие

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 // переходим в короткую позицию

{

// следует ли ее закрыть?

/* УДАЛЕНО - трейлинг-стоп только закрывается

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);

}

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

Единственное, в чем я не уверен, так это в том, как вы теперь закрываете сделку. Правильно ли я понимаю, что вы отключили TS?

Надеюсь, вы не против, если я изменю ваш код.

Спасибо,

 

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

Мне нравится, как MA_Cross перемещает стоплосс в прибыль при +20 или около того, поэтому, как только сделка в прибыли, вам больше не нужно держать маржу.

Грэм

 

Привет, Грэм,

Да, идея возникла при рассмотрении некоторых более трендовых пар. На большинстве движений всегда делаются пипсы, длинные или короткие - неважно.

Я просто хочу воспользоваться этим.

Есть возможность использовать трейлинг-стоп, просто изменив состояние этой строки с false на true.

"external bool UseTrailingStop = false;"

Но поскольку я абсолютный новичок в кодинге (спасибо CodersGuru ), я не уверен, как программа закрывает сделки в данный момент. Ищет ли она стоплосс? Я все еще изучаю закрытие ордеров.

Она определенно должна торговать по тренду, я думаю, что контр-тренд очень быстро сведет вас на нет.

Я также думал использовать это на более мелких ТФ, таких как 5, 15, 30 минут и даже 1 час, сделав MA меньше, чтобы улавливать более мелкие тренды.

 

Баг!

hellkas:
Привет Аудио мой друг...

Этот советник действительно фантастический... Большое спасибо SuperCodersGuru...

У меня простой вопрос...

Я тестировал советник v2 и заметил кое-что странное...

У меня 4 разные настройки на разных платформах, но все на одном брокере (NorthFinance), Вчера у меня была открыта только одна позиция и я подумал, что это нормально... сегодня та же позиция все еще открыта и я подумал, что это странно... Я перезапустил платформу, и новые позиции открылись.

Почему советник останавливает торговлю, пока я не перезапущу платформу?

спасибо

hellkas,

Спасибо за ваш вклад!

Я должен проверить это в понедельник.