Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 398

 
Copiare di nuovo.

È necessario scrivere parte del codice del robot di trading in modo che effettui un trade una volta se le condizioni di trading sono soddisfatte.
Per esempio:
1) Se la linea_1 è superiore alla linea_2, viene eseguita una compravendita,
2) L'affare è chiuso a SL o TP,
3) Se la linea_1 è più alta della linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.

Se le condizioni cambiano, cioè la linea_2 è più alta della linea_1, viene eseguito un trade. Poi tutto si ripete.
1) Se la linea_2 è superiore alla linea_1, viene eseguita una compravendita,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_2 è più alta della linea_1, il trade non viene eseguito finché le condizioni non cambiano.

E.
1) Se la linea_1 è più alta della linea_2, viene eseguita una compravendita..,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è superiore alla linea_2, il trade non viene eseguito fino a quando le condizioni non cambiano.

ecc.
 
Link_x:
Lo sto copiando di nuovo.

Dovete scrivere una parte del codice del vostro robot di trading, in modo che esegua un'operazione una volta, se le condizioni di trading sono soddisfatte.
Per esempio:
1) Se la linea_1 è superiore alla linea_2, viene eseguita una compravendita,
2) L'affare è chiuso a SL o TP,
3) Se la linea_1 è più alta della linea_2, un trade non viene eseguito fino a quando le condizioni non sono cambiate.
...

ecc.


(3) Il paragrafo non è chiaro. "...finché non cambiano le condizioni" - non si dice a quali condizioni ci si riferisce.

Avete solo bisogno di aprire un ordine di acquisto? Inoltre non è chiaro se sul mercato possono esistere più ordini contemporaneamente o un solo ordine.

 
fozi:

Ciao camradics.

Chi può fare trading su SP500 tramite MT4-5?


mmcis ha una demo mt4 _SP500

Ma dice Commercio: No.

Forse è solo su demo, non lo so.

 
Link_x:
Lo sto copiando di nuovo.

Devi scrivere una parte del codice di un robot di trading, in modo che faccia un affare una volta, se le condizioni di trading sono soddisfatte.
Per esempio:
1) Se la linea_1 è superiore alla linea_2, allora viene eseguita una compravendita,
2) L'affare è chiuso a SL o TP,
3) Se la linea_1 è più alta della linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.

Se le condizioni cambiano, cioè la linea_2 è più alta della linea_1, viene eseguito un trade. Poi tutto si ripete.
1) Se la linea_2 è superiore alla linea_1, viene eseguita una compravendita,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_2 è più alta della linea_1, il trade non viene eseguito finché le condizioni non cambiano.

E.
1) Se la linea_1 è più alta della linea_2, viene eseguita una compravendita..,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è sopra la linea_2, il trade non viene eseguito fino a quando le condizioni non cambiano.

ecc.


Ci ho pensato e credo di aver capito, ma voglio ancora una conferma se ho capito bene.

C'è sempre un solo ordine nel mercato. L'ordine è sempre aperto quando la condizione cambia e sempre solo per comprare.

 
khorosh:

(3) Il paragrafo non è chiaro. "...finché non cambiano le condizioni" - non si dice a quali condizioni ci si riferisce.

Avete solo bisogno di aprire un ordine di acquisto? Non è nemmeno chiaro se nel mercato possono esistere più ordini contemporaneamente o un solo ordine.

Sia comprare che vendere.
Solo un ordine.

....
 
Link_x:
Sia comprare che vendere.
Solo un ordine.

....
Il tuo incarico non dice una parola sul vendere, ma solo sul comprare ovunque.
 
khorosh:
Il tuo incarico non dice una parola sulla vendita, ma solo sull'acquisto.


Errore mio. Lo sistemo io. :)


1) Se la linea_1 è superiore alla linea_2, allora facciamo un'operazione di acquisto,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è sopra la linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.

Se le condizioni cambiano, cioè la linea_2 è più alta della linea_1, viene eseguito un trade. Poi tutto si ripete.
1) Se la linea_2 è superiore alla linea_1, viene eseguita una vendita,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_2 è sopra la linea_1, un trade non viene eseguito fino a quando le condizioni non cambiano.

E.
1) Se la linea_1 è più alta della linea_2, viene eseguita una compravendita..,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è sopra la linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.
 
Una spiegazione visiva:
File:
 
Link_x:

Ho fatto un casino. Lo sistemo io. :)


1) Se la linea_1 è superiore alla linea_2, viene eseguita una compravendita,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è sopra la linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.

Se le condizioni cambiano, cioè la linea_2 è più alta della linea_1, viene eseguito un trade. Poi tutto viene ripetuto.
1) Se la linea_2 è superiore alla linea_1, viene eseguita una vendita,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_2 è più alta della linea_1, il trade non viene eseguito finché le condizioni non cambiano.

E.
1) Se la linea_1 è più alta della linea_2, viene eseguita una compravendita..,
2) Il trade viene chiuso allo SL o al TP,
3) Se la linea_1 è sopra la linea_2, un trade non viene eseguito fino a quando le condizioni non cambiano.

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

Buon anno a tutti! Felicità, buona fortuna, amore e naturalmente enormi profitti per tutti! =))


Se sei un esperto, controlla la funzione per gli errori. Il punto principale di questa funzione: dovrebbe calcolare un lotto necessario per far sì che il prossimo ordine aperto copra le sue perdite in una certa quantità di punti in caso di chiusura della griglia degli ordini.

double FindRightLot (int otype)
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
Motivazione: