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

 
Non c'è, il supporto per le vecchie build è stato interrotto.
 

Per favore aiutatemi a cambiare la gestione del denaro nel mio codice EA.

Ci sono 2 condizioni nel mio EA

1 - lotto minimo + lavoro con lotto fisso o 2 - lotto crescente in % dei fondi disponibili

Voglio che il lotto aumenti di 0,01 lotti dopo la prima transazione non riuscita, o di 0,02 lotti dopo la seconda transazione non riuscita,

e dopo la terza perdita il lotto è di nuovo minimo.

Ho bisogno di funzioni che potrei incollare nel mio EA (preferibilmente il più semplice possibile)

Ho provato a mettere il codice attraverso include (lot_lib), genera un sacco di errori e non funziona.

Grazie in anticipo per il vostro tempo!


 

Ciao!

Sto scrivendo del codice, il punto è di mettere il livello di stop loss al punto più basso/alto delle ultime tre barre. Ecco cosa è venuto fuori:

double FindSL(int mode)
   {
    double sl; //уровень стоплосса
    double buf; //буфер
    double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
    if (mode == 1) //покупали
      {
       lvl1 = iLow(symb, 0, 0);
       lvl2 = iLow(symb, 0, 1);
       lvl2 = iLow(symb, 0, 2);
       buf = MathMin(lvl1, lvl2); //ищем низ
       sl = MathMin(buf, lvl3);
      }
    else if (mode == 2) //продавали
      {
       lvl1 = iHigh(symb, 0, 0);
       lvl2 = iHigh(symb, 0, 1);
       lvl3 = iHigh(symb, 0, 2);
       buf = MathMax(lvl1, lvl2); //ищем вершину
       sl = MathMax(buf, lvl3);
      }
    return (sl);
   }

Gli ordini sono aperti dal seguente codice:

int OpenOrder(int sell_or_buy)                                  //Открытие ордеров
   {
    GetLot();

     if(sell_or_buy==2)                                          //покупка
       {
        StopLoss = FindSL(1);
        OrderSend(symb, OP_BUYSTOP, Lots, iHigh(symb, 0, 1), 0, StopLoss, 
        iHigh(symb, 0, 1)+TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Green);    
        return (1);
       }
     else if (sell_or_buy==1)                                    //продажа
       {
        StopLoss = FindSL(2);
        OrderSend(symb, OP_SELLSTOP, Lots, iLow(symb, 0, 1), 0, StopLoss, 
        iLow(symb, 0, 1)-TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Red);
        return (1);
       }
     else {return (0);}
   } 

StopLoss è una variabile globale.

Durante i test, arriva un momento in cui i soldi finiscono, tutti in una volta, in un solo trade. I lotti sono piccoli, quindi l'unico problema è che lo stoploss non è impostato per qualche motivo (uguale a 0)

Non riesco a capire quale sia l'errore.

Guardate il codice per favore, dove potrei fare un errore?

 
gogent:

Ciao!

Sto scrivendo del codice, il punto è di mettere il livello di stop loss al punto più basso/alto delle ultime tre barre. Ecco cosa è venuto fuori:

Gli ordini sono aperti dal seguente codice:

StopLoss è una variabile globale.

Durante i test, arriva un momento in cui i soldi finiscono, tutti in una volta, in un solo trade. I lotti sono piccoli, quindi l'unico problema è che lo stoploss non è impostato per qualche motivo (uguale a 0)

Non riesco a capire quale sia l'errore.

Guardate il codice per favore, dove potrei fare un errore?

Lostop loss è sempre 0 dopo gli acquisti.

Motivo: la variabile lvl3 non è definita (errore meccanico)

 

Salve.

Ho a che fare con lo spread. Lo spread è sempre contro di me. Quindi dovrei aggiungerlo a uno stop loss e sottrarlo a un take profit? Quindi, se voglio ottenere un profitto netto di 50 pip (diciamo, 3 pip di spread su una coppia di valute), significa che devo impostare un take profit di 53 pip nel mio ordine. Se ho una perdita netta di 50 pip, allora si dovrebbe dare uno stop loss di 47 pip. Ho capito bene?

Grazie in anticipo!

 
01123456789:

Salve.

Ho a che fare con lo spread. Lo spread è sempre contro di me. Quindi dovrei aggiungerlo a uno stop loss e sottrarlo a un take profit? Quindi, se voglio ottenere un profitto netto di 50 pip (diciamo, 3 pip di spread su una coppia di valute), significa che devo impostare un take profit di 53 pip nel mio ordine. Se ho una perdita netta di 50 pip, allora si dovrebbe dare uno stop loss di 47 pip. Ho capito bene?

Grazie in anticipo!


Ciao!

Se stiamo parlando dei vostri piani e delle vostre aspettative, è giusto.

Se stiamo parlando formalmente, non mi è chiaro cosa significhi "specificare nell'ordine... " all'ordine..."

 

Ciao, aiutami con una funzione personalizzata.

Ho capito: se la condizione è vera, ritorna per isitpik- (vero). La condizione è calcolata dal buffer 0 dove si trova il calcolo da AO. O solo l'ultima i-bar si trova nel buffer e al verificarsi delle condizioni per questi criteri allora (true) viene passato a isitpik()? E perché assegnare il tipo int alla variabile (i) se è fatto dalla condizione di cui sopra.


bool isitpik( int i )
   {
   if(ExtBuffer0[i]>0 && ExtBuffer0[i]>ExtBuffer0[i+1] && ExtBuffer0[i]>ExtBuffer0[i-1])return(true);
   if(ExtBuffer0[i]<0 && ExtBuffer0[i]<ExtBuffer0[i+1] && ExtBuffer0[i]<ExtBuffer0[i-1])return(true);
   }
 
tara:


Ciao!

Se si tratta dei tuoi piani e delle tue aspettative, va bene.

Se stiamo parlando formalmente, non mi è chiaro cosa significa "in un ordine... specificare take profit =53 punti".

Quando ho detto: "Intendevo un ordine pendente (per esempio, Buy Stop) con due colonne per Stop Loss e Take Profit. Cioè, se voglio ottenere un profitto di 50 pips, dovrei specificare 53 punti di take profit nell'ordine pendente, invece di 50 perché 3 punti porteranno via lo spread. Giusto?
 
01123456789:
Dicendo: "Intendevo un ordine pendente (per esempio, Buy Stop) con due colonne per Stop Loss e Take Profit. Cioè, se voglio ottenere un profitto di 50 pips, dovrei specificare 53 punti di take profit nell'ordine pendente, invece di 50 perché 3 punti porteranno via lo spread. Giusto?

Negli ordini, TP e SL devono essere specificati in prezzi, non in punti.
 
01123456789:
Dicendo: "Intendevo un ordine pendente (per esempio, Buy Stop) con due colonne per Stop Loss e Take Profit. Cioè, se voglio ottenere un profitto di 50 pips, dovrei specificare 53 punti di take profit nell'ordine pendente, invece di 50 perché 3 punti porteranno via lo spread. Giusto?
Ogni società di intermediazione ha questo nel suo contratto. Gli ordini di acquisto sono chiusi lungo la linea di Ask e gli ordini di vendita lungo la linea di Bid. A seconda dello spread, lo aggiungerai al tuo profitto. Se vuoi ottenere 50 pips, otterrai +3 (a seconda dello spread della coppia di valute). Non dimenticare che tutti i grafici sono disegnati da Bid.