Mam Prośbę Panowie. Nie jestem za dobry w programowaniu(cały czas się uczę) i to co udało mi sie uzyskać jest poniżej ale brakuje kilku funkcji bo nie mogę coś rozgryźć ticketów oznaczających zlecenia.
Jeśli ktoś mógłby do tego coś dopisać były bym wdzięczny
Mianowice:
-Jeśli jest sygnał Buy lub Sell a jest już otwarte zlecenie niech otwiera kolejne po upływie x minut lub otwarciu nowej świecy (te warunki chyba będę umiał podmienić)
-dla każdego z otwartych zleceń tralling stop
-dla każdego ze zleceń zamknięcie jeśli "profit z pozycji" > X
-zamknięcie wszystkich zleceń o godzinie X
Nie mam pojęcia jak połączyć te aspekty z istniejącym kodem. Jeśli ktoś może pomóc to bardzo proszę
pozdrawiam
Kod: Zaznacz cały
//+------------------------------------------------------------------+ 
//|                                                 KolejnyGrall.mq4 | 
//|                                                       Profession | 
//|                                        http://www.metaquotes.net | 
//+------------------------------------------------------------------+ 
#property copyright "Profession" 
#property link      "http://www.xxx.pl"
//--- input parameters 
extern int       StopLoss=6; 
extern int       TakeProfit=12; 
extern double    Lots   = 0.1; 
int start() 
{ 
     if ( iRSI(NULL,0,5,PRICE_CLOSE,0)<30 && iRSI(NULL,0,5,PRICE_CLOSE,1)<iRSI(NULL,0,5,PRICE_CLOSE,0) && Hour()>=23  &&  Hour()<=24
          &&iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_MAIN,1)<iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_SIGNAL,1)&&(iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_MAIN,0)<70)) 
       { 
        if (countOrders(OP_BUY)==0)   OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"My order BUY",16384,0,Green);  
       } 
       
       if ( iRSI(NULL,0,5,PRICE_CLOSE,0)>70 && iRSI(NULL,0,5,PRICE_CLOSE,1)>iRSI(NULL,0,5,PRICE_CLOSE,0) && Hour()>=23  &&  Hour()<=24
          &&iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_MAIN,1)<iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_SIGNAL,1)&&(iStochastic(NULL,0,14,4,4,MODE_SMA,1,MODE_MAIN,0)<30))
       { 
        if (countOrders(OP_SELL)==0)  OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Ask-TakeProfit*Point,"My order SELL",16384,0,Green); 
       } 
    
 return(0); 
}// end start 
int countOrders(int cmd) 
{ 
int count=0; 
for(int i=0;i<OrdersTotal();i++) 
               { 
               if(OrderSelect(i,SELECT_BY_POS)) 
               {              
                 if(OrderSymbol()==Symbol() && cmd==OrderType()) 
                 { 
                  count++; 
               } } }    
              return(count); 
} // end countOrders(int cmd)
							
