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

 
Aleksei Beliakov:

Perché l'ultima riga non ha una barra, ed è possibile restituire un valore da una macro

questa è sintassi di sostituzione macro, incollaggio di stringhe

ecco un esempio di come restituire un valorehttps://www.mql5.com/ru/forum/318246/page10#comment_12652228

 
Per favore, qualcuno può aiutarmi?
 
jaffer wilson:
Per favore, qualcuno può aiutarmi?
invece dei testi - fare domande. Chiunque sia in onda considererà e aiuterà la sostanza del forum.
 
se (MA5>MA20)
{
Segnale=1;
}

if(Signal>TradeLevel) // TradeLevel è impostato su 0.
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point, "Optim",16384,0,Blue);
}



Potete dirmi perché questa logica non funziona? (mql4)
Le offerte non si aprono

(tutto il resto, le variabili, tutto è descritto - template civetta standard in MT, nessun errore di compilazione)
 
Ivan Butko:

   if (MA5>MA20)
     {
      Signal=1;
     }
   if(Signal>TradeLevel) // TradeLevel установлен в 0.
     {
      ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Bid+TP*Point,"Optim",16384,0,Blue);
     } 


Per favore, consigliatemi perché questa logica non funziona? (mql4)
Gli scambi non si aprono

(tutto il resto, le variabili, tutto è descritto - template civetta standard in MT, nessun errore di compilazione)

Quindi la logica non funziona o le posizioni EA non si aprono?

È una buona abitudine guardare prima la rivista "Experts" - c'è molto da scrivere. E farei anche bene a controllare il "Journal".

Vedo esattamente due errori e un'incertezza quando invio una richiesta di scambio.

 
Artyom Trishkin:

Quindi la logica non funziona o le posizioni EA non si aprono?

È una buona abitudine guardare prima la rivista "Experts" - c'è molto da scrivere. E non fa male guardare anche il "Journal".

Così su due piedi, vedo esattamente due errori e un'incertezza quando si invia una richiesta di scambio.

Grazie, funziona!

Ho appena reinserito questa logica nell'EA MACD standard.
Avevo solo bisogno di una base per distribuire diversi segnali e riassumerli.

Mi scuso per il fastidio. (a proposito, il log era vuoto, nessun errore, solo che non ha aperto le transazioni e questo è tutto).

Se non ti dispiace, segnala comunque l'errore

 

C'è un codice primitivo

templ(T)class CData{
public:CData(){};~CData(){};
       T Total(T &mas[]  ,int y){return(ArraySize(mas));}    
       T Total(T &mas[][],int y){return(ArraySize(mas));}}

Domanda come chiamare la funzioneTotal(), voglio chiamarla per esempio in OnInit(), ragazzi per favore non siate scortesi, sono un idiota, non capisco l'aiuto? Devo cancellare la memoria della classe, e se sì, dove e come?

 

ERRORE QUANDO SI CALCOLA IL RISCHIO PER OGNI TRADE.

COMPITO: Calcolare la dimensione del lotto per un livello di rischio accettabile per operazione di $250 per qualsiasi strumento (inclusi forex, mullion, CFD).

LA MIA REALIZZAZIONE (per BUY, snippet di codice di funzione):

//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(currencySelect,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*MarketInfo(symb,MODE_TICKVALUE)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

IL PROBLEMA: Questo codice calcola correttamente le perdite per tutte le attività, comprese le coppie di valute (compresi i cross), l'oro, il petrolio, MA GLI INDICI, nq100, ESEMPIO,NON CALCOLANO correttamente. Vale a dire, i dati del mio script (perdite potenziali delle transazioni) sono costantemente 10 volte inferiori a quelli che legge l'MT4 STRATEGY Tester!

ALCUNE NOTE:

1. il test è stato condotto nel terminale Alpari.

2. Secondo il terminale, il modo di calcolo del profitto su XAUUSD, BRN (petrolio) e NQ100 è "CFD", sulle coppie di valute, rispettivamente, "forex".

Penso che il problema sia nella dimensione del contratto, che non prendo in considerazione (per il petrolio - 1000, per XAUUSD - 100, per NQ100 - 10). Ma allora perché XAUUSD, BRN stanno contando correttamente (e anche le coppie di valute), ma NQ100 no? Forse, nonostante il fatto che nelle proprietà del simbolo del terminale Alpari il metodo di calcolo del profitto è "CFD", ma in realtà è contato come "Forex"? È possibile?

In generale, apprezzerei se qualcuno mi spiegasse il mio errore di script e come correggerlo.

GRAZIE!

 
Сергей Михеев:

ERRORE NEL CALCOLO DEL RISCHIO PER TRANSAZIONE.

MODO _TICKSIZE

 
Yurij Kozhevnikov 2019.08.10 17:57 IT
Сергей Михеев:

ERRORE NEL CALCOLO DEL RISCHIO PER TRADE.

MODO _TICKSIZE

Leggi xxxxxxxx

Questo non risolve il problema, purtroppo. Ho

MODE_TICKVALUE равно MODE_POINT и равно MODE_TICKSIZE (для NQ100 это 0.1)

Provata anche questa variante di codice:

double StoimPunkt(string B){
double S = MarketInfo(B,MODE_TICKVALUE)/(MarketInfo(B,MODE_TICKSIZE)/MarketInfo(B,MODE_POINT));return(S);
}
//valSL - размер стопа
//price - цена открытия ордера
//iLots - размер лота
SL_punkt=(price-valSL)/MarketInfo(symb,MODE_POINT); //Переводим денежное выражение в пункты
 double pricePunkt=NormalizeDouble(iLots*StoimPunkt(symb)*SL_punkt,MarketInfo(symb,MODE_DIGITS)); //Вычисляем уровень убытка при заданном размере лота

IL RISULTATO È ESATTAMENTE LO STESSO DEL MIO ESEMPIO PRECEDENTE.

Qualche altra idea?