OrderSelect()
OrderStopLoss()
OrderTakeProfit()
wszystko masz w helpie bądź na necie
TP i SL, pytanie...
Powiedzcie czy ide w dobrym kierunku:
fragment powyzej powinien ustalac poziomy TP i SL dla 2giej pozyci.
w Tym miejscu chodzi mi o to czy poprawnie wpisalem wartosci TPs, SLs, Tpb i SLb
i na samym koncu chcialbym sie spytac jak powiniena w prawidlowy sposob zostac zapisana funkcja start ()
jbc to warunki otwarcia pierwszej pozycji mam zapisane w CheckForOpen(), a 2giej w CheckForOpen2(). Tak samo z Zamknieciem
CheckForClose() dla 1wszej i CheckForClose2() dla 2giej
Kod: Zaznacz cały
//---Ustala TP i SL
{
int i=OrdersTotal()-1; //nr ostatniej pozycji
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
//--- Pierwsza Sell -> ustalamy TP i SL dla Buy (Poziom TP pierwszej pozycji = Poziom SL dla drugiej i odwrotnie)
if (OrderType()==OP_SELL){
int TPs=OrderOpenPrice()+OrderStopLoss();
int SLs=OrderOpenPrice()-OrderTakeProfit();
}
//--- Pierwsza Buy -> ustalamy TP i SL dla Sell (Poziom TP pierwszej pozycji = Poziom SL dla drugiej i odwrotnie)
if (OrderType()==OP_BUY){
int TPb=OrderOpenPrice()-OrderStopLoss();
int SLb=OrderOpenPrice()+OrderTakeProfit();
}
}
Kod: Zaznacz cały
//--- Otwarta jest Buy -> Otwiera Sell
res2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLb,TPb,"",0,0,Red)
//--- Otwarta jest Sell -> Otwiera Buy
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLs,TPs,"",0,0,Blue);
;
i na samym koncu chcialbym sie spytac jak powiniena w prawidlowy sposob zostac zapisana funkcja start ()
Kod: Zaznacz cały
void start()
{
if(IleOtwartychPozycji(0) !=0) CheckForOpen(); // IleOtwartychPozycji(0) !=0 czyli ze sa otwarte pozycje Buy lub Sell (-1 Sell, 0 Buy lub Sell, 1 Buy)
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
if(IleOtwartychPozycji(Symbol())==0) CheckForOpen();
else CheckForClose()
//funckja ta nie jest dokonczona
;
