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

 
gince:

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.

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

Leggete con più attenzione. Non ricordo nel dettaglio, ma il codice 3 non fa parte di Wingdings.


ps; Ecco cosa c'è nella nota.

Icodici speciali delle frecce non possono essere usati negli indicatori personalizzati quando si imposta il valore della freccia per le lineecon lo stile DRAW_ARROW.

 
È un EA.
AlexeyVik:

Leggete attentamente. Non ricordo nel dettaglio, ma il codice 3 non fa parte di Wingdings.


ps; Ecco cosa c'è nella nota

Icodici speciali delle frecce non possono essere usati nella visualizzazione della freccia quando si imposta il valore della freccia per le lineeche hanno uno stile DRAW_ARROW.

Questo è un EA e ha una funzione.

 
gince:
È l'assessore.
Non importa.
 
AlexeyVik:
Non importa.

Quando posso farlo?

 
gince:
Questo è l'Expert Advisor.

C'è una seconda funzione nello stesso consigliere. Lì tutto va bene. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

void f_ArrowOpen(
                  datetime openTime,
                  int action,
                  double lots,
                  string symb,
                  double openPrice
                  )
{
   color c;
   string op="";
      if(action==1)
      {
         c=Blue;
         op="BUY";
      }
      else if(action==-1)
      {
         c=Red;
         op="SELL";
      }
   // order open arrow name:    #76840865 buy 0.05 EURUSDc at 1.30416

      string objName = StringConcatenate("#", TimeToString(openTime,TIME_DATE|TIME_MINUTES), " ", op, " ", lots, " ", symb, " at ", openPrice);
      ObjectCreate(objName, OBJ_ARROW, 0, openTime, openPrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 1);
      ObjectSetText(objName, "LOT: " + DoubleToStr(lots, 2));
}
//+------------------------------------------------------------------+ 
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));
}
 
Per favore, ditemi. L'Expert Advisor fa trading basandosi sui segnali degli indicatori su ogni barra. Cosa devo fare per far controllare le condizioni di ogni zecca. Ecco le condizioni dell'indicatore:
int limit, i;
int counted_bars=IndicatorCounted(); // Quante barre sono già state contate
if (counted_bars<0) return(-1); // Controlla un possibile errore
if (counted_bars>0) counted_bars--; // conta l'ultima barra contata
limit=Bars-counted_bars; // inizia dall'ultima barra contata
// - 1 - ============================ Fine del blocco ===================================

// - 2 - ======================= Visualizza l'indicatore sulla storia ======================
for(i = limite; i >= 0; i--)
{
FastMA= iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i);
SlowMA= iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i);

}
// - 2 - ============================ Fine del blocco ===================================

// - 3 - ======================= Uscita segnale ========================================
//if (LastBar != Time[0]) // Una volta per barra
//{
è questo?
 
gince:

C'è una seconda funzione nello stesso consigliere. Lì tutto va bene. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

Pensi che ti convincerò che hai frainteso qualcosa? Faresti meglio a dedicare il tuo tempo agli esperimenti e a cercare di capire quello che hai scritto.
 

Buon pomeriggio a tutti.

Puoi dirmi quale condizione aggiungere prima di OrderSend, in modo che l'ordine non venga eseguito se la posizione aperta precedente è in deficit? In modo che non ci sia una media.

 
Craft:

Buon pomeriggio a tutti.

Puoi dirmi quale condizione aggiungere prima di OrderSend, in modo che l'ordine non venga eseguito se la posizione aperta precedente è in deficit? Voglio evitare di fare una media.

In generale, il controllo va così

OrderSelect(ticket,SELECT_BY_TICKET);

if(OrderProfit()<0) { }


E puoi mettere tutto quello che vuoi tra parentesi. Io, per esempio, lo uso in questo modo per far funzionare il metodo "Martin")

 
Buona sera, potreste dirmi come funziona l'EA. Se scrivo return direttamente nella funzione principale Start, l'EA termina? Grazie in anticipo!
Motivazione: