Как установить советник (Expert Adviser) , индикатор (Indicator)
Сигнальный бар shift Рисующие индикаторы, с чем едят закрытый бар и текущий
Описание
Скальпинг – одна из сложных, рискованных и в то же время быстрых способов заработать $, но не факт, что после заработка Вам отдадут Ваш выигрыш. Стратегии на скорости тиковых данных – пожалуй одни из самых обсуждаемых прибыльных систем. Но здесь есть свои нюансы.
Котировки, поступающие в терминал – имеют разный объем данных. Даже, если ВЫ установите 2 одинаковых терминала одной компании, включите их одновременно (что нереально согласитесь?) а также запустите одновременно своих скальперов – ВЫ не получите результат с 100% точностью. Сделки на 2 терминалах могут быть разные. И это зависит только от потока передаваемых данных с сервера в Ваш терминал.
Обсуждение моих систем TickSniper для мт4 и TickSniper для мт5 – на других форумах зашло в тупик с одним вопросом: Почему на мт4 и на мт5 разные позиции и прибыль?
Ответ прост: В разности котировок. Терминал мт4 имеет грубо говоря вялый поток котировок. Наверно это обуславливается транспортным потоком.
В терминале MetaTrader5 – поток котировок в 10! раз сильнее, отсюда и большая разница между открытыми сделками.
Для данной статьи были специально написаны два эксперта, TEST TICK для мт5 и TEST TICK для мт4, по коду они полностью идентичны(естественно языки программирования разные. поэтому названия функций также разное).
Код для мт4:
#property copyright “Copyright 2013, expforex”
#property link "" int timestart=0; int ticknumber=0; // номер тика double PriceBID=0;// Цена тика БИД double PriceASK=0; // Цена тика АСК int TimemsTick=0; // Время тика в мс int init() { timestart=Time[0]; // начнем отсчет с нового бара, чтобы все советники на всех терминалах стартовали одинаково.! return(0); } // Старт советника, судя по справке - запускается с каждым тиком int start() { if(timestart!=Time[0]) {if(TimemsTick==0)TimemsTick=GetTickCount(); ticknumber++; PriceBID=Bid; PriceASK=Ask; Comment("\n\n\n\n Номер тика="+ticknumber+"\nPriceBID="+PriceBID+"\nPriceASK="+PriceASK+"\nTimeTickinms="+(GetTickCount()-TimemsTick)); Print("Номер тика="+ticknumber+" PriceBID="+PriceBID+" PriceASK="+PriceASK+" TimeTickinms="+(GetTickCount()-TimemsTick)); } return(0); }
Код для мт5 :
#property copyright "Copyright 2013, expforex." #property link "" #property version "1.00" int timestart=0; int ticknumber=0; // номер тика double PriceBID=0;// Цена тика БИД double PriceASK=0; // Цена тика АСК int TimemsTick=0; // Время тика в мс int OnInit() { datetime Time[]; ArraySetAsSeries(Time,true); CopyTime(_Symbol,_Period,0,1,Time); timestart=(int)Time[0]; // начнем отсчет с нового бара, чтобы все советники на всех терминалах стартовали одинаково.! return(INIT_SUCCEEDED); } // Старт советника, судя по справке - запускается с каждым тиком void OnTick() { datetime Time[]; ArraySetAsSeries(Time,true); CopyTime(_Symbol,_Period,0,1,Time); if(timestart!=(int)Time[0]) { if(TimemsTick==0)TimemsTick=(int)GetTickCount(); ticknumber++; MqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); double Bid=last_tick.bid; SymbolInfoTick(_Symbol,last_tick); double Ask=last_tick.ask; PriceBID=Bid; PriceASK=Ask; Comment("\n\n\n\n Номер тика="+ticknumber+"\nPriceBID="+PriceBID+"\nPriceASK="+PriceASK+"\nTimeTickinms="+(GetTickCount()-TimemsTick)); Print("Номер тика="+ticknumber+" PriceBID="+PriceBID+" PriceASK="+PriceASK+" TimeTickinms="+(GetTickCount()-TimemsTick)); } return; }
Данные эксперты делают следующее:
В момент инициализации мы запоминаем бар – на котором советник стартовал, чтобы добиться одновременного старта эксперта на всех 4 терминалах на следующем баре (в Нашем случае м30).
Далее советник с каждым тиком записывает на экран и в журнал данные о : номер тика, цены БИД\АСК время тика в мс с момента старта подсчета
Скачал 2 терминала мт4 и 2 терминала мт5 – с одного брокера, чтобы наш тест был более правдоподобным.
Я запустил терминал – поставил на графики EURUSD M30 – всех четырех терминалов – 1 советник для проверки наших слов.
То что мы стартовали одновременно нам говорят первые строки наших логов:мт4_1 :
18:29:58 TEST TICK EURUSD,M30: Номер тика=1 PriceBID=1.32281000 PriceASK=1.32289000 TimeTickinms=0
мт4_2 :
18:29:58 TEST TICK EURUSD,M30: Номер тика=1 PriceBID=1.32281000 PriceASK=1.32289000 TimeTickinms=0
мт5_1 :
GR 0 18:29:58 TEST TICK (EURUSD,M30) Номер тика=1 PriceBID=1.32281 PriceASK=1.32289 TimeTickinms=0
мт5_2 :
GR 0 18:29:58 TEST TICK (EURUSD,M30) Номер тика=1 PriceBID=1.32281 PriceASK=1.32289 TimeTickinms=0
Как мы можем наблюдать на следующем скрине, котировки стартонули одинаково, но все же у нас появились расхождения в 1-2 тика, что однозначно послужило поводов для того, чтобы с уверенностью сказать: Скальпер не способен принести 100 % одинаковый результат на 2 разных платформах мт4 и мт5, Он также не способен одновременно открывать сделки на двух терминалах одной компании мт4. или мт5. Это нереально! И в этом виноват не брокер. Это транспортный протокол, который блуждает по сетевому пространству от сервера к Вашему компьютеру, бывают потери пакетов. Нормальная ситуация.
Разница в расчетах и анализ
Следующие скрины показывают нам разницу в расхождении
И это только спустя 3 минуты со времени старта советников.
Обратимся к нашим логам к одному тику номер 1433 терминалов мт4 :
18:47:44 TEST TICK EURUSD,M30: Номер тика=1433 PriceBID=1.32336000 PriceASK=1.32344000 TimeTickinms=1065503
18:47:44 TEST TICK EURUSD,M30: Номер тика=1433 PriceBID=1.32335000 PriceASK=1.32345000 TimeTickinms=1065674
У нас совпадает время по серверу, но время в мс у нас разное! также как и разные котировки
Тик номер 1684
18:52:05 TEST TICK EURUSD,M30: Номер тика=1684 PriceBID=1.32377000 PriceASK=1.32385000 TimeTickinms=1326586
18:52:03 TEST TICK EURUSD,M30: Номер тика=1684 PriceBID=1.32374000 PriceASK=1.32382000 TimeTickinms=1324496
Отличается не только время но и цена БИД\АСК
Теперь сравним то же самое в терминалах мт5:
ES 0 18:48:42 TEST TICK (EURUSD,M30) Номер тика=4316 PriceBID=1.3231 PriceASK=1.32318 TimeTickinms=1124050
DS 0 18:48:43 TEST TICK (EURUSD,M30) Номер тика=4316 PriceBID=1.32311 PriceASK=1.3232 TimeTickinms=1124502
Один и тот же номер тика, но почему разные цены?
Или вот еще :
RJ 0 18:52:21 TEST TICK (EURUSD,M30) Номер тика=4984 PriceBID=1.32363 PriceASK=1.32371 TimeTickinms=1342701
H 0 18:52:22 TEST TICK (EURUSD,M30) Номер тика=4984 PriceBID=1.32364 PriceASK=1.3237 TimeTickinms=1344355
Разное время прихода тика в мс, разная цена АСК\БИД
В архиве здесь, находятся все материалы по данной статье, в том числе есть также сами эксперты, видео и картинки, лог файлы терминалов.
Вывод напрашивается сам собой, так может ли один и тот же эксперт – на двух демках одинаковых, одного брокера, одной платформы с точностью в 100 % совершать одни и те же сделки? Ответ очевиден – нет. Такого не бывает!
Надеюсь данная статья подробно ответит на все Ваши вопросы в будущем. И зная такие данные ВЫ сможете более четко оперировать скальпером на терминалах. Делать больше прибыли.
Если данная статья понравилась вам ставьте в комментариях +
Как узнать пинг(время доступа к серверу Вашего брокера?)
Скорость от ВПС до сервера брокера узнать очень легко. Эта функция стандартная в Windows и называется PING
Чтобы выяснить время доступа, Вам необходимо узнать адрес вашего сервера.
Для начала открываем папку Вашего терминала и подпапку CONFIG
Находим файл с названием Вашего сервера.
Далее открываем его в блокноте и находим путь к Вашему брокеру – копируем в буфер
После этого в меню пуск – вводим команду cmd
После чего вводим команду ping и вставляем адрес нашего сервера
В конечном результате получаем время от Вашего компьютера до сервера Вашего брокера в мс. Чем меньше значение тем лучше для любого эксперта и тем более для скальпера.