Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1223

 
Yurij Kozhevnikov:

Levariabili statiche non vengono reinizializzate quando si cambiano i parametri di input, il periodo del grafico, ecc.

Non c'è una specie di trucco all'orecchio per reinizializzarli forzatamente? Percorso più lungo approssimativamente immaginato, non ce n'è uno semplice e breve?

Inizializzare a oninit e non renderli statici. Improvvisamente

 
Grazie. Un sorriso è sempre meglio di uno negativo.
 
Ciao, il server della MT5 di AMP Global è fuori uso. Una nuova scansione della rete non aiuta. Anche il re-logging non aiuta.
File:
 

Salud!

Cosa significa "file ex4 non valido (7)" e "inizializzazione globale fallita"?

 
Yurij Kozhevnikov:
Grazie. Un sorriso è sempre meglio di un negativo.
Non ricordo di aver detto qualcosa di negativo che non fosse di proposito, ma non importa.

MQL non è del tutto (per niente) C plus. I membri statici della classe o le variabili non dovrebbero essere nelle funzioni. Causano un sacco di problemi e questi problemi sono poi difficili da localizzare.

Solo al massimo livello, in una specifica EA, pensando intensamente.
 

Ciao a tutti!!!

  1. C'è un array di valori - 500 MA per ogni barra

Come possiamo calcolare le imbracature risultanti?:

- Quando si cambia direzione?

Consigliato di immergersi nelle mappe Kohonen, beh, non riuscivo a capirlo!

 
Top2n:

Ciao!!!

  1. C'è un array di valori - 500 MA per ogni barra

Come possiamo calcolare le imbracature risultanti?:

- Quando si cambia direzione?

Consigliato di immergersi in Kohonen Maps, beh non riuscivo a capirlo!

quali sono i tuoi mA?

Se SMA, probabilmente puoi cavartela con l'aritmetica scolastica. Basta ricordare la formula :-)

 

Salud!
C'è un codice che traduce uno stop a Breakeven (per le vendite, per esempio):

if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN) && ask()<PositionGetDouble(POSITION_PRICE_OPEN)-BreakEven) {
                     //Comment("Modify sell");
                     MqlTradeRequest request;
                     MqlTradeResult  result;
                     ulong  position_ticket  = PositionGetTicket(i);// тикет позиции
                     string position_symbol  = PositionGetString(POSITION_SYMBOL); // символ
                     int    digits           = (int)SymbolInfoInteger(position_symbol,SYMBOL_DIGITS); // количество знаков после запятой

                     double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

                     double tp               = PositionGetDouble(POSITION_TP);  // Take Profit позиции
                     ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);  // тип позиции
                     ZeroMemory(request);
                     ZeroMemory(result);
                     request.action          = TRADE_ACTION_SLTP; // тип торговой операции
                     request.position        = position_ticket;   // тикет позиции
                     request.symbol          = position_symbol;     // символ
                     request.sl              = NormalizeDouble(sl,digits);                // Stop Loss позиции
                     request.tp              = tp;                // Take Profit позиции
                     request.magic = Magic;

                     //--- вывод информации о модификации
                     PrintFormat("BreakEven POSITION_TYPE_SELL Modify #%I64d %s %s",position_ticket,position_symbol,EnumToString(type));
                     //--- отправка запроса
                     if(!OrderSend(request,result))
                        PrintFormat("BreakEven POSITION_TYPE_SELL OrderSend error %d",GetLastError());  // если отправить запрос не удалось, вывести код ошибки
                     //--- информация об операции
                     PrintFormat("BreakEven POSITION_TYPE_SELL retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
                  }

Se la linea di definizione dello stop è al livello del prezzo aperto come segue:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

allora ok, trasferisce la fermata senza problemi.

Ma come faccio ad aggiungere qui in modo che non sia al prezzo aperto, ma sotto:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_POINT);  // Stop Loss позиции

oppure:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-1.0;  // Stop Loss позиции (для РТС например и других фондовых штуковин)

Poi subito i problemi volano via. Dice che sono fermate sbagliate:

2020.07.29 13:06:24.127 Trades  '723763': failed modify #16003799 sell 1 RTS-9.20 sl: 126900, tp: 124470 -> sl: 126379, tp: 124470 [Invalid stops]

Anche se è possibile spostare le mani e sotto la fermata. Per favore, consigliate come risolvere questo caso?

 

Buona giornata a tutti!


Sono un principiante - mi sono appena collegato al broker "opening" - ho installato MT5 sul mio iPhone, non riesco a collegarmi al mio conto di trading. Il mio iPhone richiede un certificato. Il mio broker mi ha anche inviato il certificato. Non so come installarlo sull'iPhone. Puoi dirmi come installarlo? Grazie in anticipo!

 
Buon pomeriggio, come si può impostare una condizione in OnTimer? Time[0] TimeCorrect può essere confrontato?