
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)