Vitaly Muzichenko: Devi ordinare per prezzo, perché non puoi cercare per dimensione, la griglia può essere diversa, e troverai o il più grande o il più piccolo, ma non il primo e non l'ultimo
Sono stati piazzati tutti nello stesso momento, quindi con 14 ordini ci potrebbe essere una differenza di 1 secondo, e non si può ordinare per tempo, solo per prezzo.
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio utilizzare solo il primo punto di ingresso, fino a quando le condizioni su H1 non sono invertite.
k=0; for (i=OrdersTotal()-1;i>=0;i--) { RefreshRates(); if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++; }
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio limitare il primo punto di entrata, fino a quando le condizioni su H1 non sono cambiate al contrario.
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio limitarmi al primo punto di entrata, mentre su H1 le condizioni non cambiano al contrario.
E senza il codice? Una ragione in più per non capire il codice.
Cosa vuoi esattamente? Non in astratto, ma esattamente quello che vuoi ottenere.
L'obiettivo è limitare l'entrata su M15 a uno (primo segnale) finché c'è un segnale su H1.
#property strict externdouble Lot= 0.1;
externint stoploss=20; externint takeprofit=50; // если stoploss и / или takeprofit = 0, то отключены. //if stoploss and/or takeprofit = 0, are disconnected.
externint Magic = 99999999; // уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными externint Slipp = 1; // величина максимально возможного проскальзывания. // slippage externint sec = 2000; // количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи // number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure
//============================= Stochastic inputint InpKPeriod=13; // K Period inputint InpDPeriod=3; // D Period inputint InpSlowing=3; // Slowing
//============================= Stochastic inputint InpKPeriod1=13; // K Period inputint InpDPeriod1=3; // D Period inputint InpSlowing1=3; // Slowing
customer03: L'obiettivo è limitare l'entrata su M15 a uno (primo segnale) finché c'è un segnale su H1.
Quindi controlla il numero di posizioni aperte sulla candela M15 null. Se hai già una posizione ed è aperta su una candela M15 null, allora non aprirne altre.
Salve, cari membri del forum. C'è un modo per impostare il valore del trailing stop integrato in Metatrader4 dall'interno dell'EA? Sono interessato a questo e non ad aggiungere all'EA un codice per l'esecuzione di un trailing stop che sia indipendente dal trailing stop integrato.
Salve, cari membri del forum. C'è un modo per impostare il valore del trailing stop integrato in Metatrader4 dall'interno dell'EA? Sono interessato a questo e non ad aggiungere all'Expert Advisor il codice per l'esecuzione di un trailing stop che sia indipendente dal trailing stop integrato.
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.
Devi ordinare per prezzo, perché non puoi cercare per dimensione, la griglia può essere diversa, e troverai o il più grande o il più piccolo, ma non il primo e non l'ultimo
Intendo la funzione che ha postato Marina.
L'ultimo ordine è determinato dal tempo.
Intendo la funzione che ha postato Marina.
L'ultimo ordine è determinato dal tempo.
Perché io lo riassumo così
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio utilizzare solo il primo punto di ingresso, fino a quando le condizioni su H1 non sono invertite.
k=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // acquisto
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio limitare il primo punto di entrata, fino a quando le condizioni su H1 non sono cambiate al contrario.
k=0;
per (i=OrdiniTotali()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // acquisto
Ma cosa succede senza il codice? In particolare, il codice non è chiaro.
Cosa vuoi esattamente? Non in astratto, ma esattamente quello che vuoi ottenere.
Cari programmatori! Aiutami a risolvere questa domanda. L'Expert Advisor entra in un trade su M15, ma prende le condizioni anche da H1. Quando le condizioni su H1 sono soddisfatte su M15 ci possono essere diversi punti di ingresso. In realtà il problema è che voglio limitarmi al primo punto di entrata, mentre su H1 le condizioni non cambiano al contrario.
k=0;
per (i=OrdiniTotali()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // acquisto
Un algoritmo approssimativo:
bool flagH1 = true;
bool flagM15 = true;
if(!flag && flagH1 && flagM15)
{
flag = true;
}
if(!flagH1 && flag)
flag = false;
E senza il codice? Una ragione in più per non capire il codice.
Cosa vuoi esattamente? Non in astratto, ma esattamente quello che vuoi ottenere.
extern double Lot= 0.1;
extern int stoploss=20;
extern int takeprofit=50;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.
extern int Magic = 99999999;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1;
// величина максимально возможного проскальзывания.
// slippage
extern int sec = 2000;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure
//============================= Stochastic
input int InpKPeriod=13; // K Period
input int InpDPeriod=3; // D Period
input int InpSlowing=3; // Slowing
//============================= Stochastic
input int InpKPeriod1=13; // K Period
input int InpDPeriod1=3; // D Period
input int InpSlowing1=3; // Slowing
int A, a, b, i, ii, o;
double SL, TP, op, stH0, stH1, stM0, stM1;
bool c;
datetime OldTime, Time0, opp;
int init()
{
OldTime = iTime(NULL,Period(),0);
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//====================================================================
stH0 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,0);
stH1 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,1);
stM0 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,0);
stM1 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,1);
//====================================================================
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && b==0 && opp != Time[0]) // покупка
{
opp = Time[0];
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
}
SL = op-stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op+takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
//---------------------------------------------------------------------------------------------------------+
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 >= 80 && stM0 < 80 && stH0 < 30 && b==0 && opp != Time[0]) // продажа
{
opp = Time[0];
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
}
SL = op+stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op-takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
return(0);
}
//+------------------------------------------------------------------+
L'obiettivo è limitare l'entrata su M15 a uno (primo segnale) finché c'è un segnale su H1.
Salve, cari membri del forum. C'è un modo per impostare il valore del trailing stop integrato in Metatrader4 dall'interno dell'EA? Sono interessato a questo e non ad aggiungere all'EA un codice per l'esecuzione di un trailing stop che sia indipendente dal trailing stop integrato.
Grazie in anticipo per le risposte.
Salve, cari membri del forum. C'è un modo per impostare il valore del trailing stop integrato in Metatrader4 dall'interno dell'EA? Sono interessato a questo e non ad aggiungere all'Expert Advisor il codice per l'esecuzione di un trailing stop che sia indipendente dal trailing stop integrato.
Grazie in anticipo per le risposte.