-dopo la fermata, un Martin moltiplicherà il lotto;
-Il numero di moltiplicazioni può essere regolato con la funzione OrdersClose, e quando raggiunge un valore specificato, il lotto viene riportato a quello di partenza;
- il volume del lotto non deve essere riportato al volume di partenza, ma deve essere diminuito sequenzialmente in ordine inverso;
-dopo la fermata, un Martin moltiplicherà il lotto;
-Il numero di moltiplicazioni può essere regolato con la funzione OrdersClose, e quando raggiunge un valore specificato, il lotto viene riportato a quello di partenza;
- il volume del lotto non deve essere riportato al volume di partenza, ma deve essere diminuito sequenzialmente in ordine inverso;
Non ho abbastanza conoscenze per risolvere il problema da solo.
Ho provato diverse combinazioni, ma non ho ottenuto l'effetto desiderato.
//+------------------------------------------------------------------+//| Расчет лота |//+------------------------------------------------------------------+double Lots()
{
double L=0;
// если последняя закрытая сделка убыточная и лот равен стартовому// включаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)==Lot)
{
Martin=true;
}
// если последняя закрытая сделка убыточная и лот больше или равен максимальному// выключаем Мартинif(GetInfoLastPos(2)<0&&GetInfoLastPos(1)>=MaxMartinLot)
{
Martin=false;
}
// если последняя закрытая сделка убыточная и Мартин включен, умножаем лотif(Martin==true)
{
L=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);
}
// если последняя закрытая сделка убыточная и Мартин выключен, делим лотif(Martin==false)
{
L=NormalizeDouble(GetInfoLastPos(1)/K_Martin,DigitsLot);
}
if(L>MAXLOT) L = MAXLOT;
if(L<MINLOT) L = MINLOT;
return(L);
}
//+----------------------------------------------------------------------------+//| Функция возвращает по символу и магику |//| 1 - размер лота последней закрытой позиции |//| 2 - размер профита с учетом комиссии и свопа последней закрытой позиции |//| 3 - время последней закрытой позиции |//+----------------------------------------------------------------------------+double GetInfoLastPos(int a=1)
{
datetime t=0;
double result=0,l=0,p=0,f=0;
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
}
}
}
}
if(a==1) {result=l;} elseif(a==2) {result=p;} elseif(a==3) {result=(double)t;}
else {result=0;}
return(result);
}
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
differenza di modulo. Senza modulo, solo la zona superiore rientra nella condizione. OpenPrice - Bid |> 10*_Point condizione di apertura
Questo è il modo in cui la condizione dovrebbe essere, Bid è inferiore a OpenPrice e nessun modulo.
Altrimenti otterremo il risultato corretto se l'offerta è superiore all'OpenPrice
differenza di modulo. Senza il modulo, solo la zona superiore rientra nella condizione. OpenPrice - Bid |> 10*_Point condizione di apertura
Non capisco bene...
Puoi per favore renderlo più chiaro... per un principiante)
Mi sorprendi.
Come?
Dall'immagine si può vedere che OpenPrice - Bid non dovrebbe essere più di 10*_Point
ma può essere inferiore, compreso il negativo
ma può essere inferiore, compreso il negativo
Sì... e si ottiene la condizione con "&& > 0"
Qual è la domanda? Così, o per qualcosa?
Sì... e si ottiene la condizione con "&& > 0"
Qual è la domanda? Così, o per qualcosa?
Attualmente sto usando questa definizione del momento per entrare nel mercato
Ho pensato che ci potrebbe essere un modo per semplificarlo)
Aiuta a ottimizzare un pezzo di codice per martin
Il compito è questo:
-dopo la fermata, un Martin moltiplicherà il lotto;
-Il numero di moltiplicazioni può essere regolato con la funzione OrdersClose, e quando raggiunge un valore specificato, il lotto viene riportato a quello di partenza;
- il volume del lotto non deve essere riportato al volume di partenza, ma deve essere diminuito sequenzialmente in ordine inverso;
per esempio OrdersClose=5, Martin=2, lot=0.01:
abbiamo la sequenza: 0,01; 0,02; 0,04; 0,08; 0,16 (reset) 0,01; 0,01;,,,,
necessità: 0.01; 0.02; 0.04; 0.08; 0.16 (reset) 0.16; 0.08; 0.04; .... 0,01.
Non ho abbastanza conoscenze per risolvere il problema da solo.
Ho provato a inserire diverse combinazioni, ma non ho ottenuto l'effetto desiderato.
Attualmente sto usando questa definizione di punto di entrata nel mercato
Ho pensato che ci potrebbe essere un modo per semplificarlo)
E Alexey ha ragione))
Questo è come dovrebbe essere per condizione, offerta sotto OpenPrice e nessun modulo.
Altrimenti otteniamo il risultato corretto se Bid è superiore a OpenPrice
Fisso)
Sì, esatto. Non ha cambiato la condizione. Per abitudine. Si confonde su un'immagine che Bid è nel mezzo))))
Ma lì seconda condizione, l'ingresso è lo stesso in numero di condizioni.
Aiuta a ottimizzare un pezzo di codice per martin
Il compito è questo:
-dopo la fermata, un Martin moltiplicherà il lotto;
-Il numero di moltiplicazioni può essere regolato con la funzione OrdersClose, e quando raggiunge un valore specificato, il lotto viene riportato a quello di partenza;
- il volume del lotto non deve essere riportato al volume di partenza, ma deve essere diminuito sequenzialmente in ordine inverso;
per esempio OrdersClose=5, Martin=2, lot=0.01:
abbiamo la sequenza: 0,01; 0,02; 0,04; 0,08; 0,16 (reset) 0,01; 0,01;,,,,
necessità: 0.01; 0.02; 0.04; 0.08; 0.16 (reset) 0.16; 0.08; 0.04; .... 0,01.
Non ho abbastanza conoscenze per risolvere il problema da solo.
Ho provato diverse combinazioni, ma non ho ottenuto l'effetto desiderato.
E Alexei ha ragione))
Sì, proprio così. Non ha cambiato la condizione. Per abitudine. Nella foto si confonde il fatto che Bid sia al centro)))
Grazie, ma non semplifica in alcun modo il mio codice)