Buon pomeriggio intenditori! Hai esaurito il giorno più difficile dell'anno? Possiamo passare agli affari? ;=).
Ho disegnato un EA, tutto è buono, ma come ho capito MQLQLQLQL5 funziona in ambiente MT4. Voglio che funzioni con un software che lavora direttamente con lo scambio. Ci sono altri compilatori MQL? Se no, che linguaggio dovrei usare per riscrivere MQL?
Anatoliy Ryzhakov: Non ho una pausa. Qual è la ragione per cui l'EA non può "vedere" i suoi ordini? L'orario del mio server e quello del mio computer sono diversi.
Il tempo di ognuno è diverso. Iniziare senza correre da lontano. 1. Controlla cosa ti dà la funzione OrdersTotal. Il suo valore dipende dalle impostazioni della cronologia: Oggi, ultimi 3 giorni, ultima settimana, ... Regolalo come preferisci. 2. Poi crea un ciclo ed emetti tutti gli ordini con Alert. Questo si chiama debugging - è una parte molto importante del lavoro di un programmatore. Più importante che scrivere codice.
Si prega di consigliare come risolvere l'errore di quantità di lotti non validi per la funzione FreeMarginCheck in EA, quando accidentalmente si imposta un valore di volume (lotto) negativo. Per avere un messaggio sul lotto sbagliato, senza messaggio di errore, nel tester .
Il tempo di ognuno è diverso. Iniziare senza correre da lontano. 1. Controlla cosa ti dà la funzione OrdersTotal. Il suo valore dipende dalle impostazioni della cronologia: oggi, ultimi 3 giorni, ultima settimana, ... Regolatelo come volete. 2. Poi create un ciclo e fate uscire tutti gli ordini usando Alert. Questo si chiama debugging - è una parte molto importante del lavoro di un programmatore. Più importante che scrivere il codice.
Compila bene, senza errori, ma non è adatto al mio caso.
Ho trovato il seguente codice
#property copyright"Влад Сергеев для mmgp"#property version"1.00"#property strict#property script_show_inputsinputint orders = 4; //всего ордеров в серии inputbool buy = true; //флаг разрешающий/запрещающий покупки inputbool sell = false; //флаг разрешающий/запрещающий продажи inputint magic = 100500; //уникальный номер для ордеров, открываемых этим скриптом inputdouble lot = 0.01; //объем каждого ордера серии inputint tp = 100; //тейк профит, в пунктах inputint sl = 100; //стоп лосс, в пунктах inputint slip = 2; //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор) //+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
int i=0; // для чего эта переменная
int ticket=0;
if(buy)
{
while(i<orders) // здесь эта переменная используется чтобы сравнивать ордера или для чего
{
RefreshRates(); // если убрать эту функцию коду хуже не становится
ticket=OrderSend(Symbol(),OP_BUY,lot,NormalizeDouble(Ask,Digits),slip,0,0,"",magic,0,clrBlue); //здесь понятно
if(ticket!=-1) // эта строчка тоже не понятна
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) // функция для выбора ордера это логично но тоже не понятно как ей пользоваться
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-sl*Point,Digits),NormalizeDouble(OrderOpenPrice()+tp*Point,Digits),0,clrBlue);
// эту строчку тоже хотел бы чтобы объяснили
}
}
i++; // что увеличивается на оду единицу это относится к магическому номеру ордера чтобы программа понимала что у неё есть ордера
}
}
i=0;
if(sell) // прошлая запись была для покупак эта для продаж
{
while(i<orders)
{
RefreshRates();
ticket=OrderSend(Symbol(),OP_SELL,lot,NormalizeDouble(Bid,Digits),slip,0,0,"",magic,0,clrRed);
if(ticket!=-1)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+sl*Point,Digits),NormalizeDouble(OrderOpenPrice()-tp*Point,Digits),0,clrRed);
}
}
i++;
}
}
}
//+------------------------------------------------------------------+
Forse può essere usato, ma non capisco il significato delle stringhe. Questo codice può essere usato quando viene riscritto per adattarsi alla mia condizione?
Potete dirmi come scrivere nel codice dell'Expert Advisor per aprire 3 trade contemporaneamente con la possibilità di impostare lo SL?
Ecco la mia condizione
Mi è stato consigliato di usare la funzione (OrdersTotal()), ma non si adatta al mio caso. Ce l'ho così
Compila bene, senza errori, ma non è adatto al mio caso.
Ho trovato il seguente codice
Forse può essere usato, ma non capisco il significato delle stringhe. Posso usare questo codice se lo riscrivo per adattarlo alla mia condizione?
Prova in questo modo
pos=0; //contatore di ordine
for(int i=OrdersTotal()-1;i>=0;i--) //leggere gli ordini di mercato
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continua;//seleziona dagli ordini di mercato
{
if (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continue;//seleziona solo gli ordini EA (se c'è Magic e si negozia su qualsiasi coppia di valute)
pos++; //se abbiamo selezionato, allora aumenta pos di uno
L'ordine di vendita si chiude al prezzo Ask
Sono un po' confuso! Punta il dito dove si trova il bug nel codice!!!(il log dice ORDER CLOSE ERROR 4108) Grazie in anticipo!
Buon pomeriggio intenditori! Hai esaurito il giorno più difficile dell'anno? Possiamo passare agli affari? ;=).
Ho disegnato un EA, tutto è buono, ma come ho capito MQLQLQLQL5 funziona in ambiente MT4. Voglio che funzioni con un software che lavora direttamente con lo scambio. Ci sono altri compilatori MQL? Se no, che linguaggio dovrei usare per riscrivere MQL?
Hai una pausa e devi continuare.
Non ho una pausa. Per quale motivo l'EA potrebbe non "vedere" i suoi ordini? Ho diversi orari di server e computer, forse per questo?
Il tempo di ognuno è diverso. Iniziare senza correre da lontano. 1. Controlla cosa ti dà la funzione OrdersTotal. Il suo valore dipende dalle impostazioni della cronologia: Oggi, ultimi 3 giorni, ultima settimana, ... Regolalo come preferisci. 2. Poi crea un ciclo ed emetti tutti gli ordini con Alert. Questo si chiama debugging - è una parte molto importante del lavoro di un programmatore. Più importante che scrivere codice.
Il tempo di ognuno è diverso. Iniziare senza correre da lontano. 1. Controlla cosa ti dà la funzione OrdersTotal. Il suo valore dipende dalle impostazioni della cronologia: oggi, ultimi 3 giorni, ultima settimana, ... Regolatelo come volete. 2. Poi create un ciclo e fate uscire tutti gli ordini usando Alert. Questo si chiama debugging - è una parte molto importante del lavoro di un programmatore. Più importante che scrivere il codice.
Grazie!
Potete dirmi come scrivere nel codice dell'Expert Advisor per aprire 3 trade contemporaneamente con la possibilità di impostare lo SL?
Ecco la mia condizione
Mi è stato consigliato di usare la funzione (OrdersTotal()), ma non si adatta al mio caso. Ce l'ho così
Compila bene, senza errori, ma non è adatto al mio caso.
Ho trovato il seguente codice
Forse può essere usato, ma non capisco il significato delle stringhe. Questo codice può essere usato quando viene riscritto per adattarsi alla mia condizione?
Potete dirmi come scrivere nel codice dell'Expert Advisor per aprire 3 trade contemporaneamente con la possibilità di impostare lo SL?
Ecco la mia condizione
Mi è stato consigliato di usare la funzione (OrdersTotal()), ma non si adatta al mio caso. Ce l'ho così
Compila bene, senza errori, ma non è adatto al mio caso.
Ho trovato il seguente codice
Forse può essere usato, ma non capisco il significato delle stringhe. Posso usare questo codice se lo riscrivo per adattarlo alla mia condizione?
Prova in questo modo
pos=0; //contatore di ordine
for(int i=OrdersTotal()-1;i>=0;i--) //leggere gli ordini di mercato
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continua;//seleziona dagli ordini di mercato
{
if (OrderSymbol()!=Symbol()&&OrderMagicNumber()!=Magic) continue;//seleziona solo gli ordini EA (se c'è Magic e si negozia su qualsiasi coppia di valute)
pos++; //se abbiamo selezionato, allora aumenta pos di uno
}
}
Potete dirmi come scrivere nel codice dell'EA per aprire 3 trade contemporaneamente con la possibilità di impostare lo SL?