E poi si formeranno gli eredi e tutto tornerà alla normalità
Non sto chiedendo una soluzione software out-of-the-box, sto chiedendo una direzione da cercare - con cosa iniziare se OrdersHistoryTotal( ) non funziona. Ma non importa. Ho un'altra domanda: ho provato il mio Expert Advisor in due terminali Alpari (demo e reale con le quotazioni caricate e con risultati diversi). Perché una cosa del genere?
Puoi dirmi per favore come chiamare l'indicatore dall'EA? (chiamata completa, ho bisogno di un disegno, non di buffer)
E come allocare lo spazio per l'EA su un grafico, in modo simile a come viene allocato un indicatore in una finestra separata?
Sarei felice di implementarlo sia su mt4 che su mt5 - almeno dove andare.
Dall'EA sono visibili solo i buffer, se ho bisogno di più, allora basta spostare la logica dell'indicatore nell'EA, o usare variabili globali per trasferirli.
E che ne dite di assegnare spazio all'EA sul grafico, in modo simile a come l'indicatore è assegnato in una finestra separata?
Che ne dite di questo? Un grafico EA in una sottofinestra? O come qui?
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// 7. ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ПРОГРАММАМИ MQL4.//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// 7.1. Функция удаляет эксперт с указанного графика. В случае успеха функция возвращает TRUE, иначе - FALSE.bool ServiceDeleteExpert(int hwndChart); // Системный дескриптор окна графика, удаляемого эксперта.//===============================================================================================================================================// 7.2. ФУНКЦИЯ удаляет индикаторы по имени из списка загруженных индикаторов.void ServiceDeleteIndicatorsByName(int hwndChart, // Системный дескриптор окна, куда прикреплен индикатор.int nWindow, // Номер подокна для удаления индикаторов. Если -1, то удаляются индикаторы из всех подокон.string &asIndicatorName[], // Одномерный массив с именами удаляемых индикаторов.int nNumberName); // Количество имён индикаторов в массиве.//===============================================================================================================================================// 7.3. Функция удаляет скрипт с указанного графика. В случае успеха функция возвращает TRUE, иначе - FALSE.bool ServiceDeleteScript(int hwndChart); // Системный дескриптор окна графика, удаляемого скрипта.//===============================================================================================================================================// 7.4. Функция управляет диалоговым окном завершения скрипта и возвращает системный дескриптор диалогового окна завершения скрипта, если окно есть,// иначе - NULL. Функция работает только с русской и английской локализациями.int ServiceDialogScript(int bInstruction); // Команда для диалогового окна завершения скрипта: TRUE - завершить скрипт, FALSE - не завершать скрипт.//===============================================================================================================================================// 7.5. Функция получает имена индикаторов из списка загруженных индикаторов.// В случае успеха функция возвращает количество индикаторов в указанных подокнах параметром "nWindow", иначе ноль.int ServiceGetNamesIndicators(int hwndChart, // Системный дескриптор окна, куда прикреплен индикатор.int nWindow, // Номер подграфика. Если -1, то считываются имена индикаторов из всех подокон.string &asIndicatorName[], // Одномерный строковый массив для приёма имён индикаторов.// Массив должен быть инициализирован разными значениями в каждой ячейке!// Это особенность инициализации строковых массивов в MQL4.int nNumberName); // Размер массива "asIndicatorName[]" для приёма имён индикаторов.//===============================================================================================================================================// 7.6. Функция возвращает TRUE, если окно свойств эксперта открыто, иначе - FALSE.bool ServiceIsPropertiesExpert(string sNameExpert); // Имя эксперта, для которого контроллируется открытие окна.//===============================================================================================================================================// 7.7. Функция открывает окно списка индикаторов. Функция ожидает открытия окна в течении 2,5 секунд. Если окно не появилось в течении этого времени,// функция возвращает FALSE.bool ServiceListIndicators(int hwndChart); // Системный дескриптор окна графика, на котором вызывается окно списка индикаторов.//===============================================================================================================================================// 7.8. Функция загружает на указанный график пользовательский индикатор по его имени.void ServiceLoadCustomIndicator(int hwndChart, // Системный дескриптор окна графика, куда загружается индикатор.string sNameIndicator, // Имя загружаемого индикатора.int bOK); // Подтверждение запуска индикатора, при наличии диалогового окна свойств индикатора.// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.//===============================================================================================================================================// 7.9. Функция загружает на указанный график эксперт по его имени.void ServiceLoadExpert(int hwndChart, // Системный дескриптор окна графика, куда загружается эксперт.string sNameExpert, // Имя загружаемого эксперта.int bOK); // Подтверждение запуска эксперта, при наличии диалогового окна свойств эксперта.// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.//===============================================================================================================================================// 7.10. Функция загружает на указанный график скрипт по его имени.void ServiceLoadScript(int hwndChart, // Системный дескриптор окна графика, куда загружается скрипт.string sNameScript, // Имя загружаемого скрипта.int bOK); // Подтверждение запуска скрипта, при наличии диалогового окна свойств скрипта. Скрипт может не иметь окна свойств!// При использовании функции для загрузки скрипта из скрипта на текущем графике параметр не работает из-за// невозможности одновременной работы двух скриптов на одном графике.// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.//===============================================================================================================================================// 7.11. Функция загружает на указанный график стандартный индикатор по его имени.void ServiceLoadStdIndicator(int hwndChart, // Системный дескриптор окна графика, куда загружается индикатор.string sNameIndicator, // Имя загружаемого индикатора.int bOK); // Подтверждение запуска индикатора, при наличии диалогового окна свойств индикатора.// TRUE - автонажатие на кнопку "OK" разрешено, FALSE - автонажатие на кнопку "OK" запрещено.//===============================================================================================================================================
L'EA apre un ordine alla volta durante i test e lo chiude al momento giusto.
Quando lo faccio funzionare su un conto reale, gli ordini aperti non vengono chiusi, e poi li apro al contrario, così come nella stessa direzione, e gli ordini si accumulano.
Non so perché succede.
L'Expert Advisor funziona in questo modo:
if (условие на открытие продажи)
{
if (Ticket2 > 0)
{
OrderClose(Ticket2, Lot, Bid, 2, Red); // закрытие покупки
Ticket2=0;
}
if (Ticket1 == 0)
Ticket1=OrderSend(Symbol(), OP_SELL, Lot, Bid, 2, 0, 0);
}
if (условие для покупки)
{
if (Ticket1 > 0)
{
OrderClose(Ticket1, Lot, Ask, 2, Red); // закрытие продажи
Ticket1=0;
}
if (Ticket2 == 0)
Ticket2_RSI=OrderSend(Symbol(), OP_BUY, Lot, Ask, 2, 0, 0);
}
L'EA apre un ordine alla volta durante i test e lo chiude al momento giusto.
Quando lo faccio funzionare su un conto reale, gli ordini aperti non vengono chiusi, e poi li apro al contrario, così come nella stessa direzione, e gli ordini si accumulano.
Non so perché succede.
L'Expert Advisor funziona in questo modo:
Il pezzo di codice in cui sono fatti questi biglietti è segreto?
Vivrà per un po'.
E poi si formeranno gli eredi e tutto tornerà alla normalità
Zto, dove vederlo, meglio scaricarlo, ritardato però.
qui c'è un thread - a pagina 9 come scaricare, se non mi sbaglio.
L'ho trovato con metodo scientifico:
Sostituisci limit=Bars-counted_bars-5; con limit=Bars-counted_bars-2;
E mettere ChartRedraw() davanti a tutti i ritorni.
Sì, la morale è questa: il limite deve essere impostato esattamente in modo che non ci siano errori di esecuzione, non si può prendere troppo ))))
ecco il thread - a pagina 9 come scaricare, se non mi sbaglio.
Grazie mille. Diamo un'occhiata.
Sì, l'articolo 8 è stato trovato.
Puoi dirmi per favore come chiamare l'indicatore dall'EA? (chiamata completa, ho bisogno di un disegno, non di buffer)
E come allocare lo spazio per l'EA su un grafico, in modo simile a come viene allocato un indicatore in una finestra separata?
Sarei felice di implementarlo sia su mt4 che su mt5 - anche se dovessi trasferirmi ovunque.
Puoi dirmi per favore come chiamare l'indicatore dall'EA? (chiamata completa, ho bisogno di un disegno, non di buffer)
E come allocare lo spazio per l'EA su un grafico, in modo simile a come viene allocato un indicatore in una finestra separata?
Sarei felice di implementarlo sia su mt4 che su mt5 - almeno dove andare.
Dall'EA sono visibili solo i buffer, se ho bisogno di più, allora basta spostare la logica dell'indicatore nell'EA, o usare variabili globali per trasferirli.
Che ne dite di questo? Un grafico EA in una sottofinestra? O come qui?
Puoi dirmi per favore come chiamare l'indicatore dall'EA? (chiamata completa, ho bisogno di un disegno, non di buffer)
E come allocare lo spazio per l'EA su un grafico, in modo simile a come viene allocato un indicatore in una finestra separata?
Sarei felice di implementarlo sia su mt4 che su mt5 - almeno dove andare.
Biblioteca.
Buona sera.
Ho questo problema...
L'EA apre un ordine alla volta durante i test e lo chiude al momento giusto.
Quando lo faccio funzionare su un conto reale, gli ordini aperti non vengono chiusi, e poi li apro al contrario, così come nella stessa direzione, e gli ordini si accumulano.
Non so perché succede.
L'Expert Advisor funziona in questo modo:
Buona sera.
Ho questo problema...
L'EA apre un ordine alla volta durante i test e lo chiude al momento giusto.
Quando lo faccio funzionare su un conto reale, gli ordini aperti non vengono chiusi, e poi li apro al contrario, così come nella stessa direzione, e gli ordini si accumulano.
Non so perché succede.
L'Expert Advisor funziona in questo modo:
Il frammento di codice dove vengono eseguiti questi ordini non è segreto?
Ho solo scritto come sono fatti)
L'ordine può essere condizionato da qualsiasi cosa, che sia un indicatore o un prezzo che raggiunge un certo livello.
Sul tester, questo è quello che succede, ma su quello reale, gli ordini non vengono chiusi e vengono ulteriormente aperti dall'alto.