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

 
Vitaly Muzichenko #:

Отлично!

Как это записать кодом?

Print(_Symbol," Плечо: ",AccountInfoInteger(ACCOUNT_LEVERAGE),
" Залог за мин. лот: ",NormalizeDouble(MarketInfo(_Symbol,MODE_MARGINREQUIRED)*MarketInfo(_Symbol,MODE_LOTSTEP),2),
" Процент от баланса: ",NormalizeDouble(MarketInfo(_Symbol,MODE_MARGINREQUIRED)*MarketInfo(_Symbol,MODE_LOTSTEP)/AccountInfoDouble(ACCOUNT_BALANCE)*100,4));


USDCHF Плечо: 400 Залог за мин. лот: 2.5 Процент от баланса: 0.0214
USDCHF Плечо: 200 Залог за мин. лот: 5.0 Процент от баланса: 0.2500
 
yura droba #:

Помогите пожалуйста, как найти середину импульса и расставить относительно середины ТР и SL.

Это зависит от того, как определяется импульс.
 

здравствуйте всем!

нужно приделать к советнику ограничение следующего характера:

если лимитка преобразовалась в рыночный ордер, то новая лимитка в этот же день уже не выставится, (неважно закрылся ли рыночный ордер по стопу/тейку или нет)

нашел вот такую функцию на форуме:

if (day!=TimeDay(TimeCurrent()))
      {
      
      // проверяем условие открытия
          {
          //если условие подходит, открываем сделку — и изменяем флаг day
          day=TimeDay(TimeCurrent());
          }

      }

сделал так у себя:

  double buylimit_open=0,selllimit_open=0;
   int sig_slimit=0,sig_blimit=0,day=1;
 //если нет откр орд. и отступ > мин. стопа то, откр бай/селл на интервале "step" 
   if(n==0&&blimit==0) {buylimit_open=NormalizeDouble(Bid-step,Digits);sig_blimit=1; }
   if(n==0&&slimit==0) {selllimit_open=NormalizeDouble(Ask+step,Digits);sig_slimit=1;}
   
   if (day!=TimeDay(TimeCurrent()))
      {
   if(Ask < iLow(NULL,1440,1)&&Sell==true&&sig_slimit==1) 
   
   {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);
   
   if(open>0) day=TimeDay(TimeCurrent());{return;}
   
   if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
   
   if(Bid > iHigh(NULL,1440,1)&&Buy==true&&sig_blimit==1) 
   
   {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);
   
   if(open>0)day=TimeDay(TimeCurrent()); {return;} 
   
   if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
      }

но я не знаю как задать day=?? если 0, то ничего не меняется, если 1 то что то меняется но не нашел пока где и что (сделок меньше открылось)

такая функция применима вообще к моему примеру?

 
Tretyakov Rostyslav #:


Что-то не могу собрать воедино с уже открытым лотом на счёте А

 
Vitaly Muzichenko #:

Что-то не могу собрать воедино с уже открытым лотом на счёте А

Счет "А" - плечо 1:500, депозит 5000

ордер 1.2 лота

EURUSD Плечо: 500 Залог за мин. лот: 2.14 Залог за ордер 1.2: 256.51 Процент маржи от баланса: 5.1302

Счет "В" - плечо 1:100, депозит 1000

если попытаться поставить ордер 1.2 лота, то такой ордер не пройдет)

EURUSD Плечо: 100 Залог за мин. лот: 10.69 Залог за ордер 1.2: 1282.51 Процент от баланса: 128.2512

по счету "А" маржа за ордер 5.1302% от депозита

Берем  5.1302% от депозита счета "В" - это 1000/100*5.1302=51.30

и делим на залог за мин. лот и умножаем на мин.лот, т.е. 51.30/10.69*0.01=0.04798

а теперь проверим

EURUSD Плечо: 100 Залог за мин. лот: 10.69 Залог за ордер 0.04798: 51.28 Процент от баланса: 5.1279

Счет "А" - 5,1302

Счет "В" - 5,1279

Нагрузка на оба счета одинаковая

 
законопослушный гражданин #:

здравствуйте всем!

нужно приделать к советнику ограничение следующего характера:

если лимитка преобразовалась в рыночный ордер, то новая лимитка в этот же день уже не выставится, (неважно закрылся ли рыночный ордер по стопу/тейку или нет)

нашел вот такую функцию на форуме:

сделал так у себя:

но я не знаю как задать day=?? если 0, то ничего не меняется, если 1 то что то меняется но не нашел пока где и что (сделок меньше открылось)

такая функция применима вообще к моему примеру?

Надо поставить в глобальные переменные

int day=0;
 

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

 

Tretyakov Rostyslav #:

USDCHF Плечо: 400 Залог за мин. лот: 2.5 Процент от баланса: 0.0214

USDCHF Плечо: 200 Залог за мин. лот: 5.0 Процент от баланса: 0.2500


Как при разнице плечей в 2 раза процент от баланса отличается в 11.68 ?

 
PapaYozh #:

Как при разнице плечей в 2 раза процент от баланса отличается в 11.68 ?

 
 
PapaYozh #:

Как при разнице плечей в 2 раза процент от баланса отличается в 11.68 ?

На первом счете баланс около 11000$, а на втором 2000$

UPD

USDCHF Плечо: 400 Залог за мин. лот: 2.5 Процент от баланса: 0.0214
USDCHF Плечо: 200 Залог за мин. лот: 5.0 Процент от баланса: 0.2500

2.5/0.0214*100=11628.24

5.0/0.2500*100=2000.00

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