[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1034

 
Techno:
можно. обычный эксперт/скрипт

Может уже есть что-то похожее, подскажите где можно найти? Или знаете кто может написать?

 

профи помогите пожалуйста

не работает кусок кода(внизу)

значения МА рассчитываются и присваиваются переменной МА

правильно, а вот массиву не присваиваются. Массив определен как double

динамический. Процедура принт выводит нулевые значения массива.В чем засада?

i=i_max; // ..рассчитывать заданное колич.

if (flag_NewBar==true) // пересчитываем только во время прихода первого тика

{

while(i>=0) // Цикл по непосчитанным барам

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);

MA=NormalizeDouble(MA,Digits);

mas_MA[i]=MA;

i--; }

 

Не понятно, почему ошибка 130?? Помогите плз

Вот код:

   double myPrice      = NormalizeDouble(Bid - 10*Pnt*10,Digits);
   double myTakeProfit = NormalizeDouble(myPrice + TakeProfit * Pnt*10,Digits);                                                     //
   if (RAVI0_2_24_D1 > 1 && RAVI0_2_24_D1 < 5 && RAVI0_2_24_D1_1 < RAVI0_2_24_D1 && RAVI0_2_24_D1_2 < RAVI0_2_24_D1_1 && RAVI0_2_24_D1_3 < RAVI0_2_24_D1_2) myTakeProfit = myTakeProfit + 25 * Pnt*10;
   double myStopLoss   = NormalizeDouble(myPrice - StopLoss * Pnt*10,Digits);
   datetime myTimeEnd  = TimeCurrent() + wait*60;
   Alert("OP_BUYLIMIT: Spread=",MarketInfo(Symbol(),MODE_SPREAD)," Stop=",DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)," lot=",DoubleToStr(lotMM,3)," Pr=",DoubleToStr(myPrice,6)," SL=",DoubleToStr(myStopLoss,6)," TP=",DoubleToStr(myTakeProfit,6));
   ticket=OrderSend(Symbol(),OP_BUYLIMIT,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,ExpertName, MagicNumber,myTimeEnd,myColor);

Специально вставил Alert, чтоб увидеть проблему, но не нахожу.

Вот сообщение Alert:

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: OrderSend error 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: Alert: OP_SELLLIMIT: Spread=1 Stop=10.00 lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300

 
VNG:

профи помогите пожалуйста

не работает кусок кода(внизу)

значения МА рассчитываются и присваиваются переменной МА

правильно, а вот массиву не присваиваются. Массив определен как double

динамический. Процедура принт выводит нулевые значения массива.В чем засада?

i=i_max; // ..рассчитывать заданное колич.

if (flag_NewBar==true) // пересчитываем только во время прихода первого тика

{

while(i>=0) // Цикл по непосчитанным барам

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);

MA=NormalizeDouble(MA,Digits);

mas_MA[i]=MA;

i--; }

ИМХО массивы должны иметь определенный размер, кроме массивов в индикаторах, предназначенных для "рисования". Думаю надо вставить:
ArrayResize(mas_MA,i_max);
 
globad:

Народ, подскажите пожалуйста! Можно ли сделать программу, которая дает звуковой сигнал при прохожднии ценой 10-11п. за 0,1-0,4с.?

Предлагаю по другому, 0,1-0,4с. это примерно тик, изменение аск всего обзора рынка за тик.
Файлы:
temp_4.mq4  4 kb
 
ikatsko:

Не понятно, почему ошибка 130?? Помогите плз

Вот код:

Специально вставил Alert, чтоб увидеть проблему, но не нахожу.

Вот сообщение Alert:

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: OrderSend error 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1: Alert: OP_SELLLIMIT: Spread=1 Stop=10.00 lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300


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

Из справки "В случае неправильной цены открытия отложенного ордера будет сгенерирована ошибка 130 (ERR_INVALID_STOPS)."

ticket=OrderSend(Symbol(),OP_BUYLIMIT,1,Close[0]+DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)*2,15,0,0,ExpertName, MagicNumber,myTimeEnd,myColor);
 
VNG:

профи помогите пожалуйста

не работает кусок кода(внизу)

значения МА рассчитываются и присваиваются переменной МА

правильно, а вот массиву не присваиваются. Массив определен как double

динамический. Процедура принт выводит нулевые значения массива.В чем засада?

i=i_max; // ..рассчитывать заданное колич.

if (flag_NewBar==true) // пересчитываем только во время прихода первого тика

{

while(i>=0) // Цикл по непосчитанным барам

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i);

MA=NormalizeDouble(MA,Digits);

mas_MA[i]=MA;

i--; }

Читаем ознакамливаемся

https://book.mql4.com/ru/operators/while

https://docs.mql4.com/ru/series/iBarShift

Я бы сделал так

if (flag_NewBar) // пересчитываем только во время прихода первого тика
 for(i=i_max;i>=0;i--) // Цикл по непосчитанным барам
    mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,
                                                             iBarShift(g_ext_smb,g_ext_TameFrame,Time[i],false)),Digits);
if (flag_NewBar==true) // пересчитываем только во время прихода первого тика
while(i>=0){ // Цикл по непосчитанным барам
mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i),Digits);
i--; 
} 
 
скажите, сколько айбаршифтов меньше нуля можно использовать для рисования объектов? какой минимум?
 
costy_:

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

Из справки "В случае неправильной цены открытия отложенного ордера будет сгенерирована ошибка 130 (ERR_INVALID_STOPS)."

Да, УЖ :) Действительно, ошибка в том, что цена открытия отложника близка к текущей цене. Исправил, пошло. СПАСИБО

 
eddy:
скажите, сколько айбаршифтов меньше нуля можно использовать для рисования объектов? какой минимум?

айбаршифт это Поиск бара по времени (ничего не получится).

в терминале последний бар 0, время привязано к барам, т.е. только так в будущее через стринг

ObjectCreate("ff",OBJ_VLINE,0,StrToTime("2010.12.13 20:00"),0); //