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

 

Это советник, а не индикатор, вы не должны смешивать оба.

 

Привет всем...

Это советник, а не индикатор, вы не должны смешивать оба.

На самом деле, я беру некоторый код из индикатора MACD и на его основе делаю советника. Может кто-нибудь помочь мне, какой код я должен исправить?

спасибо...

 

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

Удачи

Люкс

 

привет всем...

спасибо luxinterrior за ответ...

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

У меня есть 7 буферов... от буфера1 до буфера7... каждый буфер сохраняет значение бара MACD... советник открывается.

Пост BUY, когда MACD станет "u" формой...

условие, когда...

if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1

&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6) [/CODE]

SELL post when the MACD become 'n' shape..

the condition when..

[CODE] if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1

&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)

надеюсь, кто-нибудь сможет помочь мне решить эту проблему... спасибо...

 

Есть ли способ заставить программу вычислять?

Сейчас она ждет следующего тика.

У меня открыто 6 графиков, и один и тот же индикатор находится на всех шести графиках.

Если один график получает тик, он обновляется, но другие графики не обновляются, поэтому они "несвежие".

Спасибо.

 
:: Если это подходит, то попробуйте сформировать это в советнике, там вы можете зациклиться и использовать функцию sleep, я пробовал несколько простых настроек, чтобы иметь только процессы/вычисления, не связанные с тиками, но тогда у вас есть проблема обновления экрана ... так что ... Я вернул все в нормальное состояние... важность этого была не так велика... возможно, в MQL5, который скоро появится .

:: индикаторы не могут работать с функцией sleep()

:: вы можете написать dll, получить все окна в терминале... затем сделать/послать "refresh screen/window" каждому дочернему окну. Но тогда вам придется посылать dll-файл вместе с индикатором другим... опять же... все усложняется...

TheRumpledOne:
Есть ли способ заставить программу вычислять?

Сейчас он ждет следующего тика.

У меня открыто 6 графиков, и один и тот же индикатор находится на всех шести графиках.

Если один график получает тик, он обновляется, но другие графики не обновляются, поэтому они "несвежие".

Спасибо.
 

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

Надеюсь, вы не против, если я вмешаюсь, я рассматриваю похожую ситуацию, и у меня есть мысль по этому поводу... что если вы закодируете цикл в конце вашей программы, который говорит "если ни один ордер не открыт, выполните его снова". и пусть он зациклится, возможно, 3 или 4 раза.

Если он это сделает, то все пропущенные ордера (что случается довольно часто) должны быть подхвачены. Или я что-то не так думаю.

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

for (int k = OrdersTotal() ==0; k >=2; k++)

{

if ( ! OrderSelect ( k, SELECT_BY_POS, MODE_TRADES )) continue;

if (k > 2) break;

}

return(0);

}

Я все еще новичок в этом, так что если это не имеет смысла, пожалуйста, объясните мне, почему.

 

To Lux, ajk, Raygun, Devil2000, IN10TION

Спасибо за советы.

Я попробую их и, надеюсь, найду ответ.

Я напишу позже.

Big Be

 
amatrader:
Привет,

Надеюсь, вы не возражаете, если я вмешаюсь, я рассматриваю похожую ситуацию, и у меня есть мысль по этому вопросу... что если вы закодируете цикл в конце вашей программы, который говорит "если ни один ордер не открыт, пройдите еще раз". и пусть он зациклится, возможно, 3 или 4 раза.

Если он это сделает, то все пропущенные ордера (что случается довольно часто) должны быть подхвачены. Или я что-то не так думаю.

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

Я еще новичок в этом деле, так что если это не имеет смысла, пожалуйста, объясните мне, почему.

Эй, это хорошая идея!

Я могу проверить время и если прошло X секунд или минут, то выйти из цикла.

СПАСИБО!!!

P.S. Это не для советника. Я не программирую советников.

 
:: это не будет работать с индикаторами, как это, даже если вы цикл 1.000.000 раз, это затормозит все остальное, ничего, кроме этого цикла не будет обрабатываться, когда цикл будет завершен, то ваш терминал будет продолжать ее нормальные процессы до нового тика.

:: в этом цикле 1.000.000 бесполезно проверять/контролировать что-то еще, поэтому функция sleep() не работает.

TheRumpledOne:
Эй, это хорошая идея!

Я мог бы проверить время и если прошло X секунд или минут, то выйти из цикла.

СПАСИБО!!!

P.S. Это не для советника. Я не пишу советников.
Причина обращения: