Помощь в кодировании - страница 471

 
systemfault:
Привет всем,

мне нужна помощь... у меня есть простая ea, но запрограммированная на 4 цифры. (Например: EUR/USD: 1,1234).

Как я могу использовать 5 цифр? (Например: EUR/USD: 1,12345).

Спасибо:)

simpleea.mq4

Вы можете добавить это :

*MathPow(10,_Digits%2)

там, где вы используете _Point и тогда он будет работать в пунктах одинаково на 4 и 5 значных брокеров

____________________

 

Привет, Младен,

Спасибо за пост.

Я делаю это следующим образом.

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

if((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

if((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

это правда?

 
systemfault:
Привет Младен,

Спасибо за пост.

Я делаю это следующим образом.

int CheckForOpen()

{

double L = Low;

double H = High;

double Lots = MathRound(AccountBalance()/100)/1000;

if((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int i=1; i<5; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

if((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE);

for(int j=1; j<5; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

это правда?

Да

Но тогда также измените параметр Grid с 1500 на 150, иначе он будет пытаться установить цену на 1500 пунктов от Bid или Ask.

 

Я использую эту конфигурацию;

extern int PeriodX = 60;

extern int Limit = 50;

extern int Grid = 14;

extern int Amount = 1;

extern int LockDown = 20;

Какова эта конфигурация?

 
systemfault:
Я использую эту конфигурацию;

extern int PeriodX = 60;

extern int Limit = 50;

extern int Grid = 14;

extern int Amount = 1;

extern int LockDown = 20;

Что это за конфигурация?

Это откроет лимиты на покупку и продажу на расстоянии 14 пунктов от спроса и предложения.

Попробуйте.

 
mladen:
Он открывает лимиты на покупку и продажу на расстоянии 14 пипсов от ask и bid Попробуйте.

Я пробовал... похоже на это...

Файлы:
adsz.png  35 kb
 
systemfault:
Я пробую... кажется вот это...

Насколько я вижу, он делает то, для чего предназначен.

 
mladen:
Насколько я вижу, он делает то, для чего предназначен.

Да, Младен...

Но я не хочу закрывать ордера без прибыли и стоплосс 14 пунктов.

 
systemfault:
Да, Младен... Но я не хочу закрывать ордера без прибыли и стоплосса в 14 пунктов.

Затем добавьте тейк-профит и стоп-лосс.

 
mladen:
Затем добавьте тейк-профит и стоп-лосс.

Я добавил этот код;

int CheckForClose()

{

if(getProfit()>=Amount){CloseAll();}

if(LockDown>0)

{

for(int TradeNumber = OrdersTotal(); TradeNumber >= 0; TradeNumber--)

{

if (OrderSelect(TradeNumber, SELECT_BY_POS, MODE_TRADES)&&(LockDown>0))

{ int Pos=OrderType();

if((Pos==OP_BUY)&&(Bid-OrderOpenPrice()>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point,OrderTakeProfit(),0,CLR_NONE);}

if((Pos==OP_SELL)&&(OrderOpenPrice()-Ask>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point,OrderTakeProfit(),0,CLR_NONE);}

}

}

}

}

Например; EUR/USD цена ордера 1.12345 sl/tp 1.12346

я хочу sl/tp 1.12355

Я не понимаю, что происходит не так?

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