Se volete guardare nel tester, potete rimuovere il test per un tempo successivo a quello effettivo. Questo è in OnInit. E non ricordo se in 4ka nel tester una richiesta di tempo restituirà esattamente il tempo del tester. Penso che restituisca l'ora corrente, quindi nel tester ci sono solo ordini in una volta e basta. Anche la richiesta dell'ora locale darà l'ora locale corrente.
È nel 5k nel tester un emulatore di ambiente completo.
Per favore, aiutatemi a fare delle correzioni. Questo EA non chiude con forza gli ordini aperti. Vorrei poter impostare il tempo di chiusura forzata insieme al tempo di impostazione dei limiti. Ho bisogno di TP e trall per ottimizzarli. Un trall, in modo che tutti i limiti sarebbero stati chiusi in modo piccolo ma raccogliere il rumore notturno.
Salve. Chi può aiutare con un EA per MT4. Ho bisogno di un EA senza trucchi per seguire gli ordini inseriti manualmente (con o senza magia). Se un ordine viene chiuso su uno stop loss, l'EA aprirà un nuovo ordine nella stessa direzione con il lotto, SL e TP specificati.Se un ordine viene chiuso su un take profit, l'EA aprirà un nuovo ordine nella direzione opposta con il lotto, SL e TP specificati. Forse ci sono delle soluzioni già pronte, io non sono riuscito a trovare nulla. Molte grazie in anticipo.
Anton Yakovlev: Se hai una buona strategia e sei disposto a condividerla, posso scrivere un EA.
Ciao, ho bisogno di un indicatore che funzioni sulla base dei movimenti delle candele (pattern). è possibile scriverlo, quanto e come passare la tua richiesta.
Imposta 2 ordini buy limit/sell limit diversamente diretti a distanza X l'uno dall'altro con stop, take, trawl.
Per esempio:
Se il prezzo colpisce uno dei limiti e chiude questo ordine in stop o take, il limite opposto viene cancellato e vengono impostati nuovamente 2 limiti diversamente diretti.
Voglio dire, se lo spread è più alto di 5 pip, per esempio, allora non piazzare ordini pendenti, ma se è un problema troppo grande, puoi saltare questo parametro.
Ivan Bielyi #: Voglio dire che se lo spread è superiore a 5 punti allora non dovremmo piazzare ordini pendenti, ma se è molto problematico, possiamo saltare questo parametro.
Qual è il punto? Non saranno eseguiti ora (sono limiti). E quando arriva il momento di eseguire, lo spread sarà completamente diverso.
Se volete guardare nel tester, potete rimuovere il test per un tempo successivo a quello effettivo. Questo è in OnInit. E non ricordo se in 4ka nel tester una richiesta di tempo restituirà esattamente il tempo del tester. Penso che restituisca l'ora corrente, quindi nel tester ci sono solo ordini in una volta e basta. Anche la richiesta dell'ora locale darà l'ora locale corrente.
È nel 5k nel tester un emulatore di ambiente completo.
Grazie per il chiarimento
https://www.mql5.com/ru/code/10236
//+------------------------------------------------------------------+
//| i`lbeback.mq4 |
//| Copyright ? 2011, AM2 && Tiburond |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2011, AM2 && Tiburond"
#property link "http://www.forexsystems.biz"
#define MAGIC 20110406
extern int StopLoss = 1300; //???????? ??????
extern int StartHour = 21; //??? ?????? ????????(???????????? ?????)
extern int Distance = 250; //?????????? ?? ???? ??? ????????? ??????
extern int Step = 50; //??? ????????? ???????
extern int Count = 4; //?????????? ??????????????? ???????
extern int Expiration = 4; //????? ????????? ??????
extern double Lots = 1; //???
extern bool MM = true; //?????????? ???????????????
extern double TSP = 5; //????
extern bool BU = true; //?????????? ?????? ??????? ? ????????? ? ??????? ???
extern int BUHour = 2; //??? ????? ??????? ??????? ??????? ? ?????????
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int b=0,s=0,res;
datetime expiration = TimeCurrent()+3600*Expiration;
double BuyPrice=fND(Open[0]-Distance*Point);
double SellPrice=fND(Open[0]+Distance*Point);
for (int i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
if (OrderType()==OP_BUYLIMIT) b++;
if (OrderType()==OP_SELLLIMIT) s++;
}
}
if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();
if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
for(i=1;i<=Count;i++)
{
{
res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);
Sleep(3000);
if(res<0)
{
Print("??????: ",GetLastError());
} else {
RefreshRates();
}
}
}
if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
for(i=1;i<=Count;i++)
{
{
res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
Sleep(3000);
if(res<0)
{
Print("??????: ",GetLastError());
} else {
RefreshRates();
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1)
{
if (n<0) return(NormalizeDouble(d, Digits));
return(NormalizeDouble(d, n));
}
//+------------------------------------------------------------------+
double fLots()
{
double lot=Lots;
double lot_min =MarketInfo( Symbol(), MODE_MINLOT );
double lot_max =MarketInfo( Symbol(), MODE_MAXLOT );
if (MM)
{
double lot_step =MarketInfo( Symbol(), MODE_LOTSTEP );
double lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );
double dollarsPerPip=0.0;
lot = AccountFreeMargin()*TSP/100.0;
dollarsPerPip=lot/StopLoss;
lot=fND(dollarsPerPip/lotcost, 2);
lot=fND(lot/lot_step, 0) * lot_step;
}
if (lot<lot_min) lot=lot_min;
if (lot>lot_max) lot=lot_max;
return(lot);
}
//+------------------------------------------------------------------+
void ClosePositions()
{
if(BU)
for (int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
{
if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
}
Sleep(1000);
}
}
}
//+------------------------------------------------------------------+
double AllProfit()
{
double Profit = 0;
for (int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
}
return (Profit);
}
//+------------------------------------------------------------------+
Per favore, aiutatemi a fare delle correzioni. Questo EA non chiude con forza gli ordini aperti. Vorrei poter impostare il tempo di chiusura forzata insieme al tempo di impostazione dei limiti.
Ho bisogno di TP e trall per ottimizzarli. Un trall, in modo che tutti i limiti sarebbero stati chiusi in modo piccolo ma raccogliere il rumore notturno.
Se hai una buona strategia e sei disposto a condividerla, posso scrivere un EA.
Come posso limitare lo spread sugli ordini limite?
E come si può limitare lo spread sui limitatori?
Voglio dire che se lo spread è superiore a 5 punti allora non dovremmo piazzare ordini pendenti, ma se è molto problematico, possiamo saltare questo parametro.
Qual è il punto? Non saranno eseguiti ora (sono limiti). E quando arriva il momento di eseguire, lo spread sarà completamente diverso.
Qual è il punto? Non saranno eseguiti ora (sono limiti). E quando arriva il momento di eseguire, lo spread sarà completamente diverso.
Cosa prende come base e quanto è complesso l'algoritmo.
Determina la tendenza della media mobile