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

 
Vitaly Muzichenko #:

Potete farlo in questo modo, senza usare librerie

Grazie!

 
MakarFX #:
Il mercato è ora chiuso, TimeCurrent() non cambia. Controlla su crypto, funziona nei fine settimana

Perché renderlo dipendente dalle zecche? Il pulsante non dovrebbe dipendere da loro.

 

Salve.

Voglio testare alcune strategie, nessuno le ha per più di 2 mesi.

Capisco che i volumi sono grandi, ecco perché i broker non permettono di scaricare. Solo coppie di base.

Forse qualcuno ne ha lasciato qualcuno nelle cartelle sul server? Almeno per 1 anno.

 
Il problema è risolto.
 
Ciao! Ho deciso di scrivere qui ... forse qualcuno risponderà!!... In CodeBase ... molto tempo fa è stato ... è stato disposto l'indicatore ... né il nome non ricordo ... né l'autore. L'essenza di esso era questo ... Impostare manualmente la linea orizzontale ... e mostra quante volte il prezzo ha attraversato la linea in una e altre direzioni ... e mostra le statistiche su questo prezzo ... Piped due volte 66 pagine ma non poteva trovare ... qualcuno può ricordare o avere qualsiasi!!! PER FAVORE, ne ho un gran bisogno!!!
 
Sinax #:
Ciao! Ho deciso di scrivere qui ... forse qualcuno risponderà!!... In CodeBase ... molto tempo fa è stato ... è stato disposto l'indicatore ... né il nome non ricordo ... né l'autore. L'essenza di esso era questo ... Impostare manualmente la linea orizzontale ... e mostra quante volte il prezzo ha attraversato la linea in una e altre direzioni ... e mostra le statistiche su questo prezzo ... Piped due volte 66 pagine ma non poteva trovare ... qualcuno può ricordare o avere qualsiasi!!! PER FAVORE, ne ho un gran bisogno!!!
Non questo:
?

 
Sergey Gridnev #:
Non quello:


No, non lo è... quello per MT4 lo era... Grazie)))

 

Buona giornata a tutti!!!!

Potete per favore aiutarmi a scrivere il codice per la griglia EA, il principio di chiusura della griglia è semplice tutti gli ordini con un profitto su tutti gli ordini con una perdita più un profitto dal prezzo di pareggio.

Sto cercando di realizzare un'idea per mediare e chiudere solo gli ordini min e max nella griglia ad un certo livello di drawdown, riducendo così il livello di drawdown.

Ecco una parte del codice per aprire gli ordini di gruppo:

se (CountTrade() < MaxOrders)

{

int order_type = FindLastOrderType();

se (tipo_ordine == OP_BUY)

{

prezzo = FindLastOrderPrice(OP_BUY);

if(Ask<= prezzo - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue);

se (biglietto < 1)

Stampa ("Errore nell'ordine di acquisto");

ModificaOrdini(OP_BUY);

}

}

se (tipo_ordine == OP_SELL)

{

prezzo = FindLastOrderPrice(OP_SELL);

if(Bid>= prezzo + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2);

ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red);

se (biglietto < 1)

Stampa ("Errore di ordine di vendita!");

ModificaOrdini(OP_SELL);

}

}

}

Qui c'è laparte del codice dove entra il comando per modificare gli ordini. Qui ho incrociato la modifica degli ordini per "Tutti gli ordini con profitto e tutti gli ordini con perdita" e "Media degli ordini min e max".

//+----------------------------------------------------------------------------+

//| Modifica dell'ordine

//+----------------------------------------------------------------------------+

void ModificaOrdini(int otype)

{

doppio

BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,

SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;


int

BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;


doppio

op = 0, lt = 0, order_lots = 0;


int

tk = 0, b = 0, s = 0;

prezzo = 0;tp = 0;


for(int i = OrdiniTotali() - 1; i >= 0; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

if(OrderSymbol() == Symbol() && OrderType() == otype)

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();

se(otype == OP_BUY)

{

b++;

if(op > BuyPriceMax || BuyPriceMax == 0)

{

BuyPriceMax = op;

BuyPriceMaxLot = lt;

BuyPriceMaxTic = tk;

}

if(op < BuyPriceMin || BuyPriceMin == 0)

{

BuyPriceMin = op;

BuyPriceMinLot = lt;

BuyPriceMinTic = tk;

}

}

se(otype == OP_SELL)

{

s++;

if(op > SelPriceMax || SelPriceMax == 0)

{

SelPriceMax = op;

SelPriceMaxLot = lt;

SelPriceMaxTic = tk;

}

if(op < SelPriceMin || SelPriceMin == 0)

{

SelPriceMin = op;

SelPriceMinLot = lt;

SelPriceMinTic = tk;

}

}

se (otype == OP_BUY || otype == OP_SELL)

{

prezzo += OrderOpenPrice() * OrderLots();

order_lots += OrderLots();

}

}

//*************************************************************//

double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0;

if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/

(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits());

if(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/

(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits());

se (Drawdown < DrawdownClosingMinMaxOrder)

avg_price = NormalizeDouble(price / order_lots, Digits);

//*************************************************************//

for(int i = OrdiniTotali() - 1; i >= 0; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if(OrderMagicNumber() == Magic)

se(OrderSymbol() == Symbol())

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

tp = NormalizeDouble(OrderTakeProfit(), Digits())

lt = NormalizeDouble(OrderLots(), 2);

tk = OrderTicket();


if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)

if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))

Print("OrderModify error #", GetLastError());


if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, 0, clrRed))

Print("OrderModify error #", GetLastError())

}

if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == SelPriceMaxTic || tk == SelPriceMinTic)

if(Ask > AwerageSelPrice && tp != AwerageSelPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))

Print("OrderModify error #", GetLastError());


if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, 0, clrRed))

Print("OrderModify error #", GetLastError());

}

se (Drawdown < DrawdownClosingMinMaxOrder)

if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);

if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);

{

if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))

Print("Ordini modificati con successo!");

else Print("Errore di modifica dell'ordine!");

}

}

}

Il risultato è il seguente: la modifica degli ordini di gruppo fino al livello di drawdown consentito è fatta in modo normale e dopo il livello di drawdown consentito sono mediati e chiudono min e max come previsto,

Ma quando il drawdown è diminuito, il nuovo TakeProfit non vuole essere impostato.

Ecco il log con i codici di errore.

Se non sapete cosa fare con esso, non preoccupatevi, riceverete un messaggio di errore!

 
EVGENII SHELIPOV #:

Buona giornata a tutti!!!!

Usa

 
MakarFX #:

Usa

Puoi essere più specifico?