L'importo del margine richiesto per il tipo di ordine specificato nel conto corrente e nell'ambiente di mercato corrente senza prendere in considerazione gli attuali ordini pendenti e le posizioni aperte.
Per un po' di tempo ho provato a rifareil blocco di chiusura degliacquisti per chiudere solo le ultime dueposizioni di acquisto, ma non ci riesce. Puoi dire a come rifareil blocco?
void Close_2buy()
{
bool result;
double close_price;
int cmd,error;
bool close;
for (int f=OrdersTotal()-1; f>=0; f--) //
{
OrderSelect(f, SELECT_BY_POS);
if (OrderSymbol()==Symbol() &&(OrderMagicNumber()==magic )
&& (OrderType() == OP_BUY ))
{
close = False;
{
close_price = MarketInfo(OrderSymbol(), MODE_BID);
close = True;
}
if (close)
{
result=OrderClose(OrderTicket(), OrderLots(), close_price, 0, CLR_NONE);
if(result!=TRUE)
{error=GetLastError();Print("LastError = ", error);}
}
}
}
}
Ho anche iniziato a usare questa funzione invece di un sacco
OrderSend errore 131 - volume sbagliato. Con deposito iniziale 10000 lotto iniziale 1. Tuttavia, qualcosa non funziona...
Io uso questo. modificatelo per voi e provate (cambiate AccountBalance() in AccountFreeMargin(), mettete la vostra variabile. LottiDigit)
//+------------------------------------------------------------------+//| 0000.mq4 |//+------------------------------------------------------------------+#property copyright ""#property link ""////////////////////////////////////////////////////////////////////////|externint Method =1; // Метод: 0-FixedLots, 1-часть //|//(Risk) от свободных средств //|// нормированных по значению //|// MeansStep(например Risk= //|// 0.01,MeansStep=1000,если //|// средств меньше 2000,лот //|// равен 0.01,если средств //|// стало 2000 или более - 0.02 //|// лота, 3000 или более - 0.03 //|// лота и т.д.). //|//|externdouble LOTS =0.01; // Количество лотов при //|// Method=0. //|//|externdouble Risk =0.01; // Риск. Часть от средств при //|// FixedLot=false. //|//|externdouble MeansStep =100.0; // Шаг средств. Используется //|// при Method=1. //| ////////////////////////////////////////////////////////////////////////|//+------------------------------------------------------------------+//|//| Определяем "свой" минимальный размер или шаг лота на момент |//|//| начала цикла в зависимости от размера баланса и установленного |//|//| риска. |//|//+------------------------------------------------------------------+//|////////////////////////////////////////////////////////////////////////|double fGetLotsSimple() //|
{ //|double LOTSTEP,lot; //|double Means; //|switch (Method) //|
{ //|case0: //|
lot=LOTS; //|break; //|case1: //|
Means=AccountBalance(); //|if(Means<MeansStep)Means=MeansStep; //|
lot=(MeansStep*MathFloor(Means/MeansStep))/MeansStep*Risk; //|break; //|default:lot=LOTS; //|
} //|if(lot<1.0/MathPow(10,LotsDigits))lot=1.0/MathPow(10,LotsDigits); //|
LOTSTEP=MarketInfo(Symbol(),MODE_LOTSTEP); //|
lot=MathFloor(lot/LOTSTEP)*LOTSTEP; //|
lot=NormalizeDouble(lot,LotsDigits); //|if(lot>AccountFreeMargin())lot=-1; //|return(lot); //|
} //|////////////////////////////////////////////////////////////////////////|
Puoi dirmi cosa potrebbe esserci di sbagliato in questo codice? È un trailing stop, ma quando viene testato genera l'errore 1, quando viene modificato. Perché l'ordine non viene modificato?
Quando stavo correggendo questo errore (finora senza successo), quando ho compilato il codice principale di Expert Advisor nella funzione di stampa, ha iniziato a restituire un errore, dicendo che ha bisogno di virgolette, ma tutto lì è corretto, e per correggere questo errore devo rimuovere e mettere una nuova virgola...
bool trailingstop()
{
se ((OrderMagicNumber()==11111)==vero)
{
Stampa("Mantenere la posizione di acquisto");
mentre(OrderCloseTime()==0)
{
se ((Bid-OrderStopLoss())>(StopLevel*Point))
{
se (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Bid-StopLevel*Point),0,0))
Print("Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," cambiato con successo a ",OrderStopLoss());
else Print("Il livello di Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber(),". Errore ",GetLastError());
}
}
se (OrderCloseTime()>0)
{
Print("L'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," ha chiuso al prezzo ",OrderClosePrice()," con un profitto/perdita ",OrderProfit());
return(true);
}
}
else
{
se ((OrderMagicNumber()==22222)==vero)
{
Stampa((Posizione di vendita);
mentre(OrderCloseTime()==0)
{
se ((OrderStopLoss()-Ask)>(StopLevel*Point))
{
se (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Ask+StopLevel*Point),0,0))
Print("Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," cambiato con successo a ",OrderStopLoss());
else Print("Il livello di Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber(),". Errore ",GetLastError());
}
}
se (OrderCloseTime()>0)
{
Print("L'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," ha chiuso al prezzo ",OrderClosePrice()," con un profitto/perdita ",OrderProfit());
Io ce l'ho così.
Grazie, è così semplice e diretto, lo proverò.
C'è qualcosa che non va. Dopo Stor Loss di nuovo nella stessa direzione.
Cos'è StopLoss?
Ciao!
Puoi dirmi quali file devono essere scaricati e dove installarli in mt4 per ottenere questa finestra?
Non capisco come farlo nellasimulazione su diversi timeframe dello strumento in prova
Voglio vedere solo tre grafici giornalieri, a quattro ore e a ore
Voglio vedere tre grafici giornalieri, a quattro ore e orari. per favore aiutatemi, non sono riuscito a farlo per tutta la notte!
Ciao!
Puoi dirmi quali file devono essere scaricati e dove installarli in mt4 per ottenere questa finestra?
Non capisco come farlo nellasimulazione su diversi timeframe dello strumento in prova
Voglio vedere solo tre grafici giornalieri, a quattro ore e a ore
Voglio vedere solo tre finestre in un timeframe, voglio vedere solo tre grafici, voglio vedere solo tre grafici giornalieri, quattro ore e orari.
È necessario aprire queste finestre programmaticamente da MT4? Non sono sicuro, non sono molto bravo a farlo... :-)
Aprire manualmente alcune finestre e inserire l'indicatore lì, non è un'opzione?
Buona sera: potreste consigliarmi come capire
L'importo del margine richiesto per il tipo di ordine specificato nel conto corrente e nell'ambiente di mercato corrente senza prendere in considerazione gli attuali ordini pendenti e le posizioni aperte.
Puoi approssimare una funzione esistente?
Ho anche iniziato a usare questa funzione invece di un sacco
OrderSend errore 131 - volume sbagliato. Con deposito iniziale 10000 lotto iniziale 1. Tuttavia, qualcosa non funziona...
Per un po' di tempo ho provato a rifare il blocco di chiusura degli acquisti per chiudere solo le ultime due posizioni di acquisto, ma non ci riesce. Puoi dire a come rifare il blocco ?
Ho anche iniziato a usare questa funzione invece di un sacco
OrderSend errore 131 - volume sbagliato. Con deposito iniziale 10000 lotto iniziale 1. Tuttavia, qualcosa non funziona...
Io uso questo. modificatelo per voi e provate (cambiate AccountBalance() in AccountFreeMargin(), mettete la vostra variabile. LottiDigit))
Puoi dirmi cosa potrebbe esserci di sbagliato in questo codice? È un trailing stop, ma quando viene testato genera l'errore 1, quando viene modificato. Perché l'ordine non viene modificato?
Quando stavo correggendo questo errore (finora senza successo), quando ho compilato il codice principale di Expert Advisor nella funzione di stampa, ha iniziato a restituire un errore, dicendo che ha bisogno di virgolette, ma tutto lì è corretto, e per correggere questo errore devo rimuovere e mettere una nuova virgola...
bool trailingstop()