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

 
Come posso prescrivere nei codici dei miei EAs che lavorino con ciascuna delle mie coppie di valute? Non riesco a capire se ho un simbolo diverso o se ho una coppia di valute diversa.
 
logut:
Come posso prescrivere nei codici dei miei EAs che lavorino con ciascuna delle mie coppie di valute? Ho un simbolo diverso ma non funziona.
Non sono sicuro di usare un singolo simbolo per una diversa coppia di valute, ma lo stesso simbolo è sufficiente.
 
Salve. Ho scritto un EA, che mostra buoni risultati nel tester. Compila senza errori. È attaccato all'euro dollaro.
Nel commercio reale i trade non si aprono, quando appaiono le condizioni per aprire un trade dà un messaggio:
2015.02.11 14:03:03.656 '1435109': ordine buy 0,01 EURUSD apertura a mercato sl: 1,12697 tp: 1,13747 fallito [S/L o T/P non valido]
Per come la vedo io, significa che non si tratta di una fermata o di una presa valida. Un ordine con determinati stop e take viene piazzato manualmente. C'è una distanza tra il prezzo e lo stop
C'è molta più distanza tra il prezzo e il punto. Tutti i calcoli dello stop e della corrente sono normalizzati. Quale può essere la ragione, non capisco, per favore aiutatemi a capire.
Ecco il programma:
int start()
{
//------------------------------------------------------------------------------------------------

se (Totale ordini()>0)
ritorno;
double monymax8=High[ArrayMaximum(High,3,0)];
if (ho rimosso la condizione stessa perché non è la ragione, dato che il programma raggiunge la funzione OrderSend)

{ double stop_sell8=monymax8+Point;
double STOP_S8=NormalizeDouble(stop_sell8,Digits);
doppio profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
double LOT8=NormalizeDouble(my_lot8,2);
OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
}
//------------------------------------------------------------------------------------------------
ritorno;
}

 
Rogoza:
Salve. Ho scritto un EA, che mostra buoni risultati nel tester. Compila senza errori. È attaccato all'euro dollaro.
Nel commercio reale i trade non si aprono, quando appaiono le condizioni per aprire un trade dà un messaggio:
2015.02.11 14:03:03.656 '1435109': ordine buy 0,01 EURUSD apertura a mercato sl: 1,12697 tp: 1,13747 fallito [S/L o T/P non valido]
Per come la vedo io, significa che non si tratta di una fermata o di una presa valida. Un ordine con determinati stop e take viene piazzato manualmente. C'è una distanza tra il prezzo e lo stop
C'è molta più distanza tra il prezzo e il punto. Tutti i calcoli dello stop e della corrente sono normalizzati. Quale può essere la ragione, non capisco, per favore aiutatemi a capire.
Ecco il programma:
int start() 
 {
 
//------------------------------------------------------------------------------------------------
if (OrdersTotal()>0)
   return;
   
   double monymax8=High[ArrayMaximum(High,3,0)];
   
       
        if (само условие я убрал так как не в нём причина, раз программа доходит до функции  OrderSend)
        {   double stop_sell8=monymax8+Point;
            double STOP_S8=NormalizeDouble(stop_sell8,Digits);
            double profit_sell8=Bid-(stop_sell8-Bid)*4-(Ask-Bid);
            double PROFIT_S8=NormalizeDouble(profit_sell8,Digits);
            double my_lot8=AccountBalance()/100/((stop_sell8-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE))/100000;
            double LOT8=NormalizeDouble(my_lot8,2);
           
             
           OrderSend(Symbol(),OP_SELL,LOT8,Bid,2,STOP_S8,PROFIT_S8);
            
                   
        }
      
 //------------------------------------------------------------------------------------------------
   return;
 } 

Formattate il vostro codice in questo modo. C'è un pulsante SRC per questo.

Non si apre perché su questi tipi di conto si aprono prima gli ordini senza stop e poi OrderModify()

 
evillive:
La magia è necessaria solo se ci sono diversi "commercianti" sullo stesso simbolo, ma è sufficiente per controllare il simbolo.
Capisco. ora quello che mi preoccupa è come rendere l'EA multivaluta?
 
AlexeyVik:

Formattate il vostro codice in questo modo. C'è il pulsante SRC per questo scopo.

Non si apre perché in questi tipi di conto si aprono prima gli ordini senza stop e poi OrderModify()

Grazie mille, riscriverò il codice.
 
logut:
Così ho capito. Ora la mia domanda è come rendere l'EA multi-valuta?
Apri un kodobase, trova lì un EA multivaluta e cerca di capire come funziona.
 

In genere, sono davvero bloccata su qualcosa e non riesco a capire come fare.

Ho delle variabili line1,line2,line3 ecc. Voglio contare il valore di ogni variabile attraverso l'istruzione for loop.

Come fare una corretta enumerazione della linea delle variabili? Ho provato a farlo come "linea "+"i", ma risulta senza senso, ovviamente.

for(int i=1;i<=111111111111;i++)
        {
            if("line"+"i">0)counter++;
        }
 
Probabilmente è meglio fare un array line[] e poi fare un loop.
 

Perché visualizza l'oggetto sbagliato? Dovrebbe essereun triangolo che punta a sinistrahttps://docs.mql4.com/ru/constants/objectconstants/arrows codice 3, ma appare una freccia che punta verso l'alto Wingdings codice 241.

obj

Codice del programma (hoObjectSet(objName, OBJPROP_ARROWCODE, 3);)

void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
Motivazione: