Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 462

 

Или такая конструкция не поможет, если нет тика на данном инструменте?

 

#property strict

extern bool USE_Info=true;

static datetime TimeN=0;

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

//| Expert tick function                                             |

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

int start()

  {

   datetime TimeC=iTime("GBPUSD",5,0);

   if(TimeN==0)TimeN=TimeC;

   if(TimeN==TimeC) return(0);

   TimeN=TimeC;

   return(INIT_SUCCEEDED);

  } 

 

Помогите сообразить.

Ситуация такая - например нужно открыть позицию по паре EURUSD со стопом 30 пунктов и тейкпрофитом 30 пунктов, перед открытием нужно определить объем лота так чтобы при убыточной сделке был убыток в 100 USD. Как это можно посчитать средствами MQL5?

SL=30; 

 Lot=Формула расчета 

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

 
PabloEs:

Помогите сообразить.

Ситуация такая - например нужно открыть позицию по паре EURUSD со стопом 30 пунктов и тейкпрофитом 30 пунктов, перед открытием нужно определить объем лота так чтобы при убыточной сделке был убыток в 100 USD. Как это можно посчитать средствами MQL5?

SL=30; 

 Lot=Формула расчета 

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

Для четвёрки можно так посчитать:

Лот=Деньги / (Стоплос_в_пунктах*MarketInfo(Symbol(),MODE_TICKVALUE))

 
Artyom Trishkin:

Для четвёрки можно так посчитать:

Лот=Деньги / (Стоплос_в_пунктах*MarketInfo(Symbol(),MODE_TICKVALUE))

Спасибо, но мне не помогло.
 
PabloEs:
Спасибо, но мне не помогло.

Смотрите не MarketInfo(), а SymbolInfoDouble()

И что значит "не помогло"? Я ж не рыбу давал, а удочку.

 
Artyom Trishkin:

Смотрите не MarketInfo(), а SymbolInfoDouble()

И что значит "не помогло"? Я ж не рыбу давал, а удочку.

Я еще слишком молод для использования удочки)

Вот написал скрипт по приведенной формуле выше

void OnStart()

  {

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));

Alert(Test); 

 Выдает 33333.33, может блесна не та?

 
PabloEs:

Я еще слишком молод для использования удочки)

Вот написал скрипт по приведенной формуле выше

void OnStart()

  {

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));

Alert(Test); 

 Выдает 33333.33, может блесна не та?

Деньги / (Стоплос_в_пунктах*MarketInfo(Symbol(),MODE_TICKVALUE))

А вы его в цене считаете

 
PabloEs:

Я еще слишком молод для использования удочки)

Вот написал скрипт по приведенной формуле выше

void OnStart()

  {

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));

Alert(Test); 

 Выдает 33333.33, может блесна не та?

Когда-то я писал такую формулу

Lot = AccountFreeMargin()*Risk/100*_Point/(StopLoss*MarketInfo(Symbol(), MODE_TICKVALUE))

AccountFreeMargin()*Risk/100 --- это твои $100

StopLoss --- разница цен открытия ордера и СЛ (не в пунктах)

Соответственно MarketInfo() надо заменить на SymbolInfoDouble()

 
PabloEs:

Я еще слишком молод для использования удочки)

Вот написал скрипт по приведенной формуле выше

void OnStart()

  {

//---

double Test=100/(300*_Point*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE));

Alert(Test); 

 Выдает 33333.33, может блесна не та?

Смотрите что у вас, если по-русски и при _Point, равном 0.00001:

Чтобы заработать 100 долларов при тейке в 0.003 пункта (300*0.00001), лот должен быть 33333.33. Так что блесна точно не та ;)

 
Artyom Trishkin:

Деньги / (Стоплос_в_пунктах*MarketInfo(Symbol(),MODE_TICKVALUE))

А вы его в цене считаете

Совершенно верно. Когда я эту формулу писал у меня СЛ не определялся заданным значением, а считался как разница цены открытия ордера и неким уровнем, потому и пришлось сумму риска умножить на _Point
Причина обращения: