Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 934

 
Aleksei Beliakov:

Почему последняя строчка без слеша,и можно ли вернуть из макроса значение

это синтаксис макроподстановок, склейка строк

вот пример возврата значения https://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
Пожалуйста, кто-нибудь может мне помочь?
 
jaffer wilson:
Пожалуйста, кто-нибудь может мне помочь?
вместо лирики - вопрошайте. Кто будет в эфире - рассмотрит и поможет по существу тематике форума. 
 
 if (MA5>MA20)
      {
        Signal=1;
      }

   
      
      if(Signal>TradeLevel) // TradeLevel установлен в 0.
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
       }



Подскажите, пожалуйста, почему эта логика не работает? (mql4)
Сделки не открываются

(все остальное, переменные, всё описано - шаблон стандартного сова в МТ, ошибок при компиляции нет)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


Подскажите, пожалуйста, почему эта логика не работает? (mql4)
Сделки не открываются

(все остальное, переменные, всё описано - шаблон стандартного сова в МТ, ошибок при компиляции нет)

Так логика не работает или позиции советник не открывают?

Есть такая хорошая привычка - сначала в журнал "Эксперты" поглядеть - там много чего пишется. Ну и в просто "Журнал" тоже не мешает заглянуть.

Я вот навскидку вижу две ошибки точно и одну неопределённость при отправке торгового запроса.

 
Artyom Trishkin:

Так логика не работает или позиции советник не открывают?

Есть такая хорошая привычка - сначала в журнал "Эксперты" поглядеть - там много чего пишется. Ну и в просто "Журнал" тоже не мешает заглянуть.

Я вот навскидку вижу две ошибки точно и одну неопределённость при отправке торгового запроса.

Спасибо, все заработало!

Просто заного перекинул эту логику в стандартный советник MACD.
Просто нужна была база для развертывания разных сигналов и суммирования их. 

Извиняюсь за беспокойство. (журнал кстати, был пустой, никаких ошибок тоже, просто не открывал сделки и все). 

Если не затруднит, прошу всё же указать на ошибку

 

Есть такой примитивный код 

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Вопрос как обратится к функции Total(), я хочу вызвать её к примеру в OnInit(), ребята просьба не грубить я валенок справку не понял? Нужно ли удалять память этого класса если да покажите где и как?

 

ГЛЮК ПРИ РАСЧЕТЕ РИСКА НА СДЕЛКУ.

ЗАДАЧА: Рассчитать размер лота при допустимом уровне риска на сделку 250 $ по любому инструменту (включая форекс, мелаллы, CFD).

МОЯ РЕАЛИЗАЦИЯ (для BUY, фрагмент кода функции):

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

ПРОБЛЕМА: Данный код корректно рассчитывает убытки для всех активов, включая валютные пары (в т.ч. кроссы), золото, нефть, НО ИНДЕКСЫ, nq100, НАПРИМЕР, СЧИТАЕТ НЕ КОРРЕКТНО. А именно, данные моего скрипта (речь идет про потенциальные убытки сделки) получаются стабильно В 10 РАЗ МЕНЬШЕ ЧЕМ СЧИТАЕТ ТЕСТЕР СТРАТЕГИЙ MT4!

НЕКОТОРЫЕ ПРИМЕЧАНИЯ:

1. Тестирование проводилось в терминале Альпари.

2. По данным терминала способ расчета прибыли по XAUUSD, BRN (нефть) и NQ100 - "CFD", по валютным парам, соответственно "forex"

3. Я думаю что проблема тут в размерах контракта, которые я не учитываю (для нефти - 1000, для XAUUSD - 100, для NQ100 - 10). Но тогда почему XAUUSD, BRN считаются корректно (И ВАЛЮТНЫЕ ПАРЫ ТОЖЕ), а NQ100 нет?? Может, не смотря на то, что в свойствах символа терминала Альпари стоит способ расчета  прибыли "CFD", но реально там считается по "Forex"? Такое вообще возможно??

В общем, буду признателен, если кто то объяснит мне популярно в чем ошибка моего скрипта и как его подправить?

СПАСИБО!

 
Сергей Михеев:

ГЛЮК ПРИ РАСЧЕТЕ РИСКА НА СДЕЛКУ.

MODE _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57   EN
Сергей Михеев:

ГЛЮК ПРИ РАСЧЕТЕ РИСКА НА СДЕЛКУ.

MODE _TICKSIZE

Читать xxxxxxx

Это не решает проблемы, к сожалению. У меня

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

Пробовал также вот такой вариант кода:

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

РЕЗУЛЬТАТ ТОЧНО ТАКОЙ ЖЕ КАК И В МОЕМ ПРИМЕРЕ ВЫШЕ.

Есть еще какие-нибудь идеи?

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