Napisałem krótki kod który modyfikuje zlecenie dodając stop loss. Tzn. powinien ale coś pochrzaniłem i nie działa.
Proszę o podpowiedź.

Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| gge.mq4 |
//| Copyright 2014, MetaQuotes Software Corp. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link "http://www.mql5.com"
#property version "1.00"
#property strict
double pips;
extern double LotSize=0.1;
extern double StopLoss=10;
double ask_price;
double bid_price;
int OnInit()
{
// Rozmiar Pipsa
double ticksize=MarketInfo(Symbol(),MODE_TICKSIZE);
if(ticksize==0.00001 || ticksize==0.001)
pips = ticksize*10;
else pips= ticksize;
ask_price=Ask;
bid_price=Bid;
return(INIT_SUCCEEDED);
}
void OnTick()
{
// Jeżeli nie ma otwartych pozycji to otwórz pozycje kupna
if(OrdersTotal()==0)
buy();
// Jeżeli wartość ceny ask wzrośnie o 20 pipsów
if (Ask>ask_price+(20*pips))
{
// Wybierz pozycję otwartą i zmodyfikuj dodając stop loss
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)
OrderModify(0,NULL,Ask-(StopLoss*pips),NULL,NULL,NULL);
}
// Jeżeli wartość ceny bid zmaleje o 20 pipsów
if (Bid<bid_price-(20*pips))
// Wybierz pozycję otwartą i zmodyfikuj dodając stop loss
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)
OrderModify(0,NULL,Bid+(StopLoss*pips),NULL,NULL,NULL);
}
}
//+------------------------------------------------------------------+
void buy()
{
OrderSend(Symbol(),OP_BUY,LotSize,Ask,3,NULL,NULL,NULL,0,0,Green);
}