Как кодировать? - страница 180

 

проблема с закрытой позицией

......

double cena=0;

static int isCrossed = 0;

isCrossed = Crossed (k,d);

if(OrderSelect(ticket, SELECT_BY_POS))

{

c=OrderOpenPrice();

return(0);

}

if (isCrossed>0)

{

cena=((c-Ask)*10000);

return(0);

}

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 1000, cena,

cena , "EMA_CROSS", 12345, 0, Green);

}

....

if(isCrossed == 2)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1000, cena,

cena, "EMA_CROSS", 12345, 0, Red);

......

в общем, советник закрывает позицию при пересечении ЕМА и одновременно открывает другую позицию.

позиции открываются, но закрываться не хотят ;/

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

 

Можно ли закрыть позицию и открыть новую на том же тике?

(...)

if(OrdersTotal()!=0) {

(...)

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrdersTotal()==0) {

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green); }

(...)

В данном примере кода короткая позиция будет закрыта на первом тике, но длинная позиция не будет открыта мгновенно. Для открытия длинной позиции требуется еще один тик.

Заранее спасибо :-)

 

Да, это возможно. Просто поместите функцию RefreshRates() между операторами.

 
 
pietra`:
...... пожалуйста, помогите

Похоже на то: Я - Пьетра. Какое у меня второе имя?

Невозможно помочь вам без полного кода. Извините.

 

Нужна помощь в кодировании

Кто-нибудь может помочь мне с кодировкой MT4 для определения максимальной и минимальной цены открытия для советника? Есть несколько открытий советником.

Нашел вот такой код, но он для определения первого/последнего открытия сделки.

double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

return(OrderOpenPrice());

}

}

return(10000);

}

Как написать код для определения наибольшего/наименьшего открытия сделки?

 

Код

lumanauw:
Кто-нибудь может мне помочь с кодировкой MT4 для определения максимальной и минимальной цены открытия для советника? Есть несколько открытий советника.

Я нашел код, похожий на этот, но он для определения первого/последнего открытия транзакции.

Double opens[1000] = {0};

double maxopen = 0 ;

double minopen = 1000000 ;

// double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

opens[cnt] = OrderOpenPrice() ;

}

}

for ( cnt = 0 ; cnt <= total ; cnt ++ )

{

if ( opens[cnt] > maxopen ) maxopen = opens[cnt] ;

if ( opens[cnt] < minopen ) minopen = opens[cnt] ;

}

}

Как закодировать информацию о наибольшем/наименьшем открытии транзакции?

привет,

измените код, как указано выше,

это не процедура для вызова из других...,

поместите его туда, куда вы хотите в коде вашего эксперта.

OTR

 

Нужна помощь в создании кода для открытия более одного заказа

Мне не удается добавить код для открытия второго ордера.

Я пытаюсь открыть 2 ордера на основе одного и того же сигнала с разными уровнями TP.

Ниже приведен мой код для открытия первого ордера:

Любая помощь будет оценена по достоинству.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(" Открытордер SellStop: ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера SellStop : ",GetLastError());

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера SellStop : ",GetLastError());

return(0);

}

 

Здравствуйте

Мне нужна помощь по простому кодированию,

1) Хеджирование сделки на определенное количество пунктов

2) Затем отключает/приостанавливает любую дальнейшую торговлю.

Убедиться, что он не хеджирует снова, так как я буду вручную закрывать хеджированную сделку.

 
williamcope:
Мне не удалось добавить код для открытия второго заказа.

Я пытаюсь открыть 2 ордера на основе одного и того же сигнала с разными уровнями TP.

Ниже приведен мой код для открытия первого ордера:

любая помощь будет оценена по достоинству.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера SellStop : ",GetLastError());

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Открыт ордер SellStop : ",OrderOpenPrice());

}

else Print("Ошибка при открытии ордера SellStop : ",GetLastError());

return(0);

}

Замените первый

return(0);

на

RefreshRates();

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