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

 
Igor Makanu:

Dubito di poterlo spiegare, se è quello che sta chiedendo

oggetto è ... diciamo che una variabile di tipo classe

nella tua sezione di codice è la classe CProgram

da qualche parte nel tuo codice deve esserci scritto

e dovrà essere chiamato

Tu sei DIO!!! Ti ho capito e tutto si è risolto)
 

Può dirmi cosa significa?

il valore di ritorno di'OrderSend' dovrebbe essere controllato TestLibrary.mq4 64 6

 
MakarFX:

Può dirmi cosa significa?

il valore di ritorno di 'OrderSend' dovrebbe essere controllato TestLibrary.mq4 64 6

Ilrisultato di OrderSend dovrebbe essere controllato. :-)

 
Maxim Kuznetsov:

Il risultato di OrderSend deve essere verificato. :-)

Conosco l'inglese)))

come controllarlo?

 
MakarFX:

Conosco l'inglese)))

Come si controlla?

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

 
Maxim Kuznetsov:

result=SomeOperation(....)

if (result!=ok) {

Print("Error");

}

Grazie
 
//+------------------------------------------------------------------+
//| TEST_V01.mq4 |
//| Copyright 2019, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#proprietà link "https://www.mql5.com"
#proprietà versione "1.00"
#proprietà rigorosa
#define MAGICMA 20131111
//--- Ingressi
input int Risk = 1;
input int Max_Risk = 8;
input int SL = 100;
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Funzione tick esperto |
//+------------------------------------------------------------------+
void OnTick()
{
se(OrdiniTotali()==0)
if(OrderSend(Symbol(), OP_BUY, Lot_Calculate(Symbol(), Risk, Max_Risk, SL), Ask, 30, NormalizeDouble(Ask - SL*Point, Digits), NormalizeDouble(Ask + SL*Point, Digits),",MAGICMA,0,Blue)==-1)
Print("Error: ",GetLastError());
}
//+------------------------------------------------------------------+
//-----------------------------------------------------------------
// Lot_Calculate |
//-----------------------------------------------------------------
doppio Lot_Calculate(stringa _symbol, int _risk, int _m_risk, int _pips)
{
_m_risk = Max_Risk;
_pips +=20;
double minlot = MarketInfo(_symbol,MODE_MINLOT);
double maxlot = MarketInfo(_symbol,MODE_MAXLOT);
double steplot = MarketInfo(_symbol,MODE_LOTSTEP);
double money_risk = NormalizeDouble(AccountEquity()*_risk/100,2);
double calk_pip_cost = NormalizeDouble(money_risk/_pips,2); // costo per punto
double lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE); // il costo di un pip ad una variazione di prezzo per volume di un lotto standard
// while(!MathIsValidNumber(lot_pip_cost || lot_pip_cost ==0)
//{
// lot_pip_cost = MarketInfo(_symbol,MODE_TICKVALUE);
//}
doppio lotto = calk_pip_cost/lot_pip_cost;
//-------------------------------------------------------------
double money_m_risk = NormalizeDouble(AccountEquity()*2*_risk/100,2); // raddoppio anche il rischio
double _m_calk_pip_cost = NormalizeDouble(money_m_risk/_pips,2); // calcolo del valore di un punto dopo il raddoppio
doppio lot_m = _m_calk_pip_cost/lot_pip_cost; // calcolo del lotto dopo il raddoppio
if(lot <= minlot) lot = minlot;
else if(lot >= maxlot) lot = maxlot;
else if(lot > minlot && lot < maxlot)
{
int k = int((lotto - minlot)/steplot);
lotto = NormalizeDouble(minlot+k*steplot,2);
}
ritorno(lotto);
// ------------------------------------------------------
{
if(lot_m <= minlot) lot_m = minlot; // da questa linea, il mio sé
else if(lot_m >= maxlot) lot_m = maxlot;
else if(lot_m > minlot && lot_m < maxlot)
{
int k = int((lotto - minlot)/steplot);
lot_m = NormalizeDouble(minlot+k*steplot,2);
}
ritorno(lot_m);
se(OrderProfit()>0) lotto--;
se(OrderProfit()<0) lot_m++;
}
if(_m_risk == Max_Risk) lot_m = lot; // non si capisce niente qui
ritorno(0);

}


Ho lottato con questo per due giorni. Non posso scrivere la funzione che ricalcola il rischio.

Se un'operazione viene chiusa da TP, il rischio rimane lo stesso.

Se il rischio viene chiuso da SL, il rischio viene aumentato di 2 volte e così via, fino al valore prescritto nelle variabili di ingresso dell'Expert Advisor, diciamo Max_Risk = 8;

e poi riportato al rischio iniziale Rischio = 1;

Bene, se dopo il raddoppio, il trade viene chiuso a TR, torniamo di nuovo al Rischio iniziale = 1;

Puoi aiutare?

Grazie in anticipo.

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. и снова dll и маркет День добрый! Правило №1 dll на...
 
Non è affatto così.
 

Buon pomeriggio!

Professionisti per favore aiutatemi. Non riesco a risolvere un problema. Ecco il codice:


datetime some_time=TimeCurrent();

int start()

{

doppia somma;

doppio razn;

int k=iBarShift(",PERIOD_M5,some_time);

double VAL0=MathAbs(iATR(NULL,0,1,1))/Point;

double VAL1=MathAbs(iATR(NULL,0,1,0))/Point;

se (VAL1>VAL0)

{

razn =MathAbs((iATR(NULL,0,1,0))-(iATR(NULL,0,1,1))/Point;

for(int i = k; i >= 1; i--)

{

summ=summ+razn;

}

Comment("Periodi usati: ",k,"\n,

"ATR precedente: "+VAL0+"\n",

"ATR corrente: ",VAL1,"\n",

"Differenza ATR: ",razn,"\n",

"Differenza ATR:",summ,"\n");

}

ritorno(0);

}

L'idea è la seguente: l'Expert Advisor conta la differenza tra il valore attuale dell'ATR e quello precedente. Ma solo con l'aumento dell'ATR.

Questa differenza viene visualizzata nella variabile "razn". Ho bisogno che il valore della variabile "razn" sia aggiunto/cumulato alla variabile "summ" ad ogni arrivo di una nuova barra.

Nella versione attuale l'accumulo di "summ" non funziona correttamente.

Ho il sospetto che si tratti di loop.


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Все предопределенные периоды графиков имеют уникальные идентификаторы. Идентификатор PERIOD_CURRENT означает текущий период графика, на котором запущена mql5-программа.
 
Buon pomeriggio ai membri del forum. Non riesco a trovare alcuna informazione. C'è qualche strumento che disegna automaticamente delle linee (non orizzontali) dai minimi e dai massimi a un certo livello di punti? In altre parole, si definisce il minimo o il massimo e si traccia la linea alla candela che fissa la distanza in pip dal massimo o dal minimo? Ho scoperto che l'indicatore Fractal fa una determinazione bassa e alta. Ma non sono stato in grado di trovare un tale add-on che mi permetta di tracciare una linea al punto di cambiamento del prezzo di un certo numero di punti.