[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 392

 

Здравствуйте всем, Я думаю что я написал туда куда требуется. Есть огромное желание изучать язык mql4 программирование для начала скриптов а потом индикаторов и советников, в частности сейчас поставил задачу написать самому советник чтобы торговал по одной из тактики. (читал на форуме что начинают со скриптов). В программировании мало мал знаком, Паскаль, делфи мало мал и С++ изучал, почитал по mql думаю мало чем отличается. Нужна помощь консультация по написанию программ правильно или нет оптимизация кода и тд. Кто сможет помочь?

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

 

Подскажите на примере пожалуйста, вот простенький код, советник открывает БАЙ со стопаком и профитом, и ставит отложенный ордер. Что нужно написать в коде, чтоб при достижении профита отложенник удалялся и всё начиналось сначала..... а при достижении стопака, например, был Alert ("Стопак").

//+------------------------------------------------------------------+
//| test.mq |
//| Copyright © 2011 |
//| http:// |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
extern double Lot = 0.01;
extern int TakeProfit = 200;
extern int StopLoss = 200;
extern double Step = 0.0020;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
{ OrderSend(Symbol(),OP_BUY,Lot,Ask,30,Ask-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green); }
{ OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-Step,30,Ask,Ask-Step-TakeProfit*Point,0,0,0,Red); }
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+

 
MIR-ASOV:

Подскажите на примере пожалуйста, вот простенький код, советник открывает БАЙ со стопаком и профитом, и ставит отложенный ордер. Что нужно написать в коде, чтоб при достижении профита отложенник удалялся и всё начиналось сначала..... а при достижении стопака, например, был Alert ("Стопак").

//+------------------------------------------------------------------+
//| test.mq |
//| Copyright © 2011 |
//| http:// |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
extern double Lot = 0.01;
extern int TakeProfit = 200;
extern int StopLoss = 200;
extern double Step = 0.0020;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
{ OrderSend(Symbol(),OP_BUY,Lot,Ask,30,Ask-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green); }
{ OrderSend(Symbol(),OP_SELLSTOP,Lot,Ask-Step,30,Ask,Ask-Step-TakeProfit*Point,0,0,0,Red); }
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+

Поищите в учебники алгоритм учёта ордеров. Затем подключите ко всему этому логику и результат будет на лицо!

А ещё с синтаксисом кода поработайте. Фигурных скобок много...


frixer:

Здравствуйте всем, Я думаю что я написал туда куда требуется. Есть огромное желание изучать язык mql4 программирование для начала скриптов а потом индикаторов и советников, в частности сейчас поставил задачу написать самому советник чтобы торговал по одной из тактики. (читал на форуме что начинают со скриптов). В программировании мало мал знаком, Паскаль, делфи мало мал и С++ изучал, почитал по mql думаю мало чем отличается. Нужна помощь консультация по написанию программ правильно или нет оптимизация кода и тд. Кто сможет помочь?

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

Так Вы пишите сюда, Мы поможем. Или Вам репетитор на дом нужен? :)))
 

Как выполнить такое действие в советнике:

Все эти условия могут не следовать сразу одно за другим (может через час или два или три), поэтому нужно сделать так, чтобы как только значение индикатора достигнет 1.0000, это условие больше не проверялось при каждом тике, а ждать пока закроется один бар падением, а после этого эти 2 условия не проверялись при каждом тике, а ждать пока значение индикатора станет меньше или равно 0.9980. Как только все условия будут выполнены открываем рыночный ордер на продажу 0.1 лота со стоп-лоссом 100п. и тейк-профитом 400п.

Может кто помочь? Может готовый пример у кого есть или дайте ссылку?

 
kolyango:

Как выполнить такое действие в советнике:

Все эти условия могут не следовать сразу одно за другим (может через час или два или три), поэтому нужно сделать так, чтобы как только значение индикатора достигнет 1.0000, это условие больше не проверялось при каждом тике, а ждать пока закроется один бар падением, а после этого эти 2 условия не проверялись при каждом тике, а ждать пока значение индикатора станет меньше или равно 0.9980. Как только все условия будут выполнены открываем рыночный ордер на продажу 0.1 лота со стоп-лоссом 100п. и тейк-профитом 400п.

Может кто помочь? Может готовый пример у кого есть или дайте ссылку?

при наступлении события ставите булево условие и время истечения.
 
kolyango:

Как выполнить такое действие в советнике:

Все эти условия могут не следовать сразу одно за другим (может через час или два или три), поэтому нужно сделать так, чтобы как только значение индикатора достигнет 1.0000, это условие больше не проверялось при каждом тике, а ждать пока закроется один бар падением, а после этого эти 2 условия не проверялись при каждом тике, а ждать пока значение индикатора станет меньше или равно 0.9980. Как только все условия будут выполнены открываем рыночный ордер на продажу 0.1 лота со стоп-лоссом 100п. и тейк-профитом 400п.

Может кто помочь? Может готовый пример у кого есть или дайте ссылку?


Вот статья в помощь - там по аналогии посмотрите...

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

У Вас все по аналогии...

Файлы:
criterion.mqh  12 kb
 
kolyango:

Как выполнить такое действие в советнике:

Все эти условия могут не следовать сразу одно за другим (может через час или два или три), поэтому нужно сделать так, чтобы как только значение индикатора достигнет 1.0000, это условие больше не проверялось при каждом тике, а ждать пока закроется один бар падением, а после этого эти 2 условия не проверялись при каждом тике, а ждать пока значение индикатора станет меньше или равно 0.9980. Как только все условия будут выполнены открываем рыночный ордер на продажу 0.1 лота со стоп-лоссом 100п. и тейк-профитом 400п.

Может кто помочь? Может готовый пример у кого есть или дайте ссылку?

Всё просто. Используем флаги в качестве семафора. Будет три блока кода, каждый из которых будет выполняться только тогда, когда предыдущий уже выполнен.

Изначально все флаги ==false.

Как только выполнилось перовое условие, ставим первый флаг=true; Теперь выполняется вторй блок кода. Как только его условие выполнилось, ставим второй флаг=true;
Теперь выполняется третий блок кода. Как только его условие выполнилось, ставим третий флаг=true; Ну и т.д.

 
artmedia70:

Всё просто. Используем флаги в качестве семафора. Будет три блока кода, каждый из которых будет выполняться только тогда, когда предыдущий уже выполнен.

Изначально все флаги ==false.

Как только выполнилось перовое условие, ставим первый флаг=true; Теперь выполняется вторй блок кода. Как только его условие выполнилось, ставим второй флаг=true;
Теперь выполняется третий блок кода. Как только его условие выполнилось, ставим третий флаг=true; Ну и т.д.



А когда флаги скидывать не написал
 

Подскажите какой шрифт использует терминал? хочется чтобы мои коменты не отличались от стандартных

if(spread >= 20)
       spreadColor = Red;
  else
       spreadColor = White;
  ObjectSetText("Spread", "Spread " + Symbol() + ": " + DoubleToStr(spread, 0), 8, "Tahoma Bold"/*"Calibri"*/, spreadColor);//"Webdings"
 

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

Пока на новом терминале не проверял... загрузка проца под 100% постоянно... Запускаю тест в режиме визуализации третьего сОва на третьем терминале - тестируется исправно...


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