Сделай распринтовку в лог и оттуда сравнивай. Очень тяжело разбираться в твоем недружелюбно представленном коде.
#include <WinUser32.mqh> //Значение для переменных MB_OK|MB_ICONEXCLAMATION //Параметры MA extern double MAp =7; // MA период extern double MAs =0; // MA смещение extern double MAm =0; // МА метод void PG(string ParaValut) { int Часы = Hour(); int Минуты = Minute(); //Параметры Мoving Average double MA; //Определяем данные по Moving Average Tek_Price_Open = iOpen(ParaValut,PERIOD_H1,1); Tek_Price_Close = iClose(ParaValut,PERIOD_H1,1); MA = iMA(ParaValut,PERIOD_H1,MAp,MAs,MAm,PRICE_CLOSE,1); // Задаем МА и параметры if (MA < Tek_Price_Close) { if ((Часы < 20) && (Часы > 4)) //Так разница с сервером в 2 часа { //int yy=5; //CreateTextLable("l1","Игра: "+ParaValut,10,"FixedSys",Black,1,10,yy); //CreateTextLable("l2","comment2="+comment2,10,"FixedSys",Lime,1,10,yy+15*1); Print("Возможная игра. Время: "+TimeToStr(TimeCurrent())+", Пара: "+ParaValut); PlaySound("сoindrop.wav"); int ret_1=MessageBox("Вероятность игры по 1Н: "+ParaValut, "Возможная ПАРА для игры 1Н",MB_OK|MB_ICONEXCLAMATION); } } if (MA > Tek_Price_Open) { if ((Часы < 20) && (Часы > 4)) //Так разница с сервером в 2 часа { Print("Возможная игра. Время: "+TimeToStr(TimeCurrent())+", Пара: "+ParaValut); PlaySound("сoindrop.wav"); int ret_2=MessageBox("Вероятность игры по 1Н: "+ParaValut, "Возможная ПАРА для игры 1Н", MB_OK|MB_ICONEXCLAMATION); } } //Параметры ручного закрытия ордера string Simvol_Ordera; int Total_Orders = OrdersTotal(); //всего ордеров int Order_Type; // тип ордера //int Ticket; // будем записывать сюда номер тикета for(int i_=Total_Orders-1; i_>=0; i_--) { if (OrderSelect(i_,SELECT_BY_POS)) { Order_Type=OrderType(); //Ticket=OrderTicket(); Simvol_Ordera = OrderSymbol(); switch(Order_Type) { case 0: // Ордер на покупку if (Simvol_Ordera == ParaValut) { if (OrderProfit()<=-30) { Print("Возможно УБЫТОК. Время: "+TimeToStr(TimeCurrent())+", Пара: "+ParaValut); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); int ret_3=MessageBox("Вероятно убыточная ПАРА 1Н: "+ParaValut, "Возможно убыточная ПАРА 1Н", MB_OK|MB_ICONEXCLAMATION); } } //Параметр ручного закрытия ордера break;// выход из блока switch case 1: // Ордер на продажу if (Simvol_Ordera == ParaValut) { if (OrderProfit()<=-30) { Print("Возможно УБЫТОК. Время: "+TimeToStr(TimeCurrent())+", Пара: "+ParaValut); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); PlaySound("alert2.wav"); int ret_4=MessageBox("Вероятно убыточная ПАРА 1Н: "+ParaValut, "Возможно убыточная ПАРА 1Н", MB_OK|MB_ICONEXCLAMATION); } } break;// выход из блока switch default: break;// выход из блока switch } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { static datetime New_Time=0; // Время текущего бара New_Bar=false; // Нового бара нет if(New_Time!=Time[0]) // Сравниваем время { New_Time=Time[0]; // Теперь время такое New_Bar=true; // Поймался новый бар string Para=""; for( int Kolich_Valut=1; Kolich_Valut<64; Kolich_Valut++) { switch(Kolich_Valut) { case 1: Para="AUDCAD"; if(New_Bar==true){PG(Para);}break; case 2: Para="AUDCHF"; if(New_Bar==true){PG(Para);}break; case 3: Para="AUDJPY"; if(New_Bar==true){PG(Para);}break; case 4: Para="AUDNZD"; if(New_Bar==true){PG(Para);}break; case 5: Para="AUDSGD"; if(New_Bar==true){PG(Para);}break; case 6: Para="AUDUSD"; if(New_Bar==true){PG(Para);}break; case 7: Para="CADCHF"; if(New_Bar==true){PG(Para);}break; case 8: Para="CADJPY"; if(New_Bar==true){PG(Para);}break; case 9: Para="CHFJPY"; if(New_Bar==true){PG(Para);}break; case 10: Para="CHFSGD"; if(New_Bar==true){РG(Para);}break; case 11: Para="EURAUD"; if(New_Bar==true){PG(Para);}break; .... case 63: Para="_QM"; if(New_Bar==true){PG(Para);}break; return; // Выход из start() } } } } //+------------------------------------------------------------------+ ну вроде вот. вставил. а может быть так что показатели разнятся из-за того что, я в МТ4 пары в виде окон не создал. а то у меня на одном 4 пары загружено, на втором компе 10. Может из-за этого?
а может быть так что показатели разнятся из-за того что, я в МТ4 пары в виде окон не создал.
а то у меня на одном 4 пары загружено, на втором компе 10. Может из-за этого?
Графики выводить необязательно, но пара должна быть в окне "Обзор рынка", иначе сигналы по ней в терминал поступать не будут.
а может быть так что показатели разнятся из-за того что, я в МТ4 пары в виде окон не создал.
а то у меня на одном 4 пары загружено, на втором компе 10. Может из-за этого?
Графики выводить необязательно, но пара должна быть в окне "Обзор рынка", иначе сигналы по ней в терминал поступать не будут.
По вашему посту я понял мне просто следует загрузить окно "Обзор рынка" и данные сами подгрузяться? А какими либо другими программными средствами обновлять
данные можно? Т.е. типа
RefreshRates( | ) |
?
Только что нашел на форуме https://forum.mql4.com/ru/14468 ))))) Тут человек выдвинул код, я его не совсем понимаю честно)))) Как на ваше усмотрение ЭТО ОТВЕТ НА ВОПРОС?
ExpertTrader 05.08.2008 10:29 Возникла проблема. Эксперту необходимы данные из другого инструмента на другом периоде. Как обновить историю на нужном графике? Вот этот код: if(iBars(symb,PERIOD_D1)<33 || iBars(symb,PERIOD_H4)<33 || iBars(symb,PERIOD_H1)<33 || iBars(symb,PERIOD_M30)<33 || iBars(symb,PERIOD_M15)<33 || iBars(symb,PERIOD_M5)<33) { if(iClose (symb,PERIOD_D1 ,33)<=iClose (symb,PERIOD_D1 ,17) || iClose (symb,PERIOD_H4 ,33)>=iClose (symb,PERIOD_H4 ,17) || iClose (symb,PERIOD_H1 ,33)<=iClose (symb,PERIOD_H1 ,17) || iClose (symb,PERIOD_M30 ,33)>=iClose (symb,PERIOD_M30 ,17) || iClose (symb,PERIOD_M15 ,33)<=iClose (symb,PERIOD_M15 ,17) || iClose (symb,PERIOD_M5 ,33)>=iClose (symb,PERIOD_M5 ,17)) { Print("Производится загрузка данных для ",symb,". Подождите пожалуйста."); Sleep(60000); return(0); } }
Давайте сразу определимся, Вы говорите о работе вживую или в тестере?
Если вживую, ничего не надо подгружать, все сделается автоматически.
Оператор RefreshRates() нужен для того, чтобы обновить данные, если Вы находитесь внутри цикла и долго не выходили из него. Если Вы работаете по тику, все данные обновятся автоматически.
Ну, тогда все эти танцы с бубном тебе ни к чему. Или ты хочешь сказать, что ты опрашиваешь цену, типа:
iClose (symb,PERIOD_D1 ,33), а тебе нет правильной цены?
Да, верно. Еще заметил, к примеру: Если несколько графиков, то при переходе с одного на другой, идет подкачка данных - т.е. появляются новые бары. Тоже самое происходит при выборе на одном графике разных временных интервалов. (Может я в неправильном направлении ищу? - Но факт того что на одном компе выдает сигнал на покупку по EURUSD, а
по второму сигнала НЕТ. После F2 подгрузки архива
котировок по EURUSD сигнал на втором ноуте появился.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Вот написал свой первый многовалютник. Только вот проблема в следующем. У меня два ноута, первый рабочий с XP а второй с Vista. Советник простой, на пересечении МА. Так вот странная штука получается на одном к примеру на Первом с ХР сигналит 5 пар, а на втором 3 пары всего. Из 8 пар к примеру 2 совподают остальные нет (((( И каждый раз ошибка выскакивает на Viste - uninit reason 3 (Это я понимаю МТ4 вырубает советник при переключении таймфреймов). На ХР, хотя я также переключаю таймфреймы ничего подобного нет, все нормально работает. Вот исходный код, помогите пожалуйста. Спасибо.