Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Конвертируйте MT3 в MT4 для меня - очень просто
Я рассматриваю возможность перехода с MT4 на MT3.
Я только что закончил редактировать свой самый первый советник.
Мне потребовалось около 4 недель, чтобы узнать достаточно об MT и MQL4, чтобы наконец-то запрограммировать свою стратегию, но теперь я думаю, что мог бы просто перевести программу на MQL2.
Из того, что я прочитал на этом форуме, я не вижу никаких преимуществ MT4.
То, что я прочитал и узнал в ходе бэктестинга моего советника, это то, что тестер стратегий MT4 не работает. Только по этой причине я думаю, что имеет смысл потратить еще несколько дней на переход, чтобы получить точный бэктест в MT3.
Я уже скачал и установил MT3 и взглянул на словарь редактора. Я вижу, что в MT3 меньше функций, чем в MT4, но я не думаю, что это будет серьезной проблемой.
Одной из функций моего советника MQL4, на которую я сильно полагался, был OrderMagicNumber для хранения первоначальной цены отложенного ордера, которая может меняться при проскальзывании, когда ордер исполняется.
Ордера MQL2 не имеют OrderMagicNumber, но я заметил в словаре MQL2 функцию OrderValue, в описании которой говорится, что эта функция может получить комментарий ордера (VAL_COMMENT).
Если я смогу использовать комментарий для хранения предпочтительной цены, я думаю, что смогу перейти на MT3. Однако я не смог найти в словаре, как установить комментарий ордера. В описании функции SetOrder в качестве одного из параметров не указан "комментарий".
Может ли кто-нибудь, знакомый с этой функцией MQL2, рассказать мне, как задается комментарий к ордеру?
Из того, что я прочитал на этом форуме, я не вижу никаких преимуществ MT4.
То, что я прочитал и узнал в ходе бэктестинга моего советника, - это то, что тестер стратегий MT4 не работает. Только по этой причине я думаю, что имеет смысл потратить еще несколько дней на переход, чтобы получить точный бэктест в MT3.
Итак, где вы прочитали, что бэктестер МТ3 более надежен, чем бэктестер МТ4?
Я думаю, что вы очень неправильно информированы об этом!
Бэктестинг MT4 может быть очень надежным, но это зависит от качества исторических данных, которые у вас есть, и вашего % качества моделирования.
Вы не сможете добавлять "комментарии" или присваивать "MagicNumbers" отправленным ордерам в MQL2 так, как это можно сделать в программировании MT4. Программирование на MT4 более продвинуто, чем на MQL2, зачем двигаться назад?
Вы можете почитать о бэктестинге MT4 здесь: http://www.strategybuilderfx.com/forums/showthread.php?t=15309&page=1&pp=8.
(если вы не можете получить доступ к этой странице, вам нужно зарегистрироваться как член клуба - это бесплатно)
Из того, что я собрал здесь и там, люди, которые серьезно относятся к бэктестингу, используют такие программы, как WealthLab, Amibroker или MetaStocks, а не mt3 или mt4.
Возможно, бэктестинг на mt4 может быть нормальным, если вы не используете никаких внутрибарных данных. Например, если вы работаете с дневными барами, вы должны использовать только значения Open и Close дневных баров (и даже не High и Low, если вы устанавливаете StopLosses или Take Profits). Больше ничего.
Причина в том, что, несмотря на "качество моделирования", единственный метод бэктестинга mt4, который использует РЕАЛЬНЫЕ данные, это"Только цены открытия".
Методы "Каждый тик" и "Контрольные точки" - это красивые сказки. Лично я не буду торговать деньгами, основываясь на бэктестинге сказочных данных.
Я все еще изучаю mt4, но по моему опыту, я бы не стал использовать бэктестинг mt4 по-другому. Я даже не уверен на 100%, что предложенный мной способ на 100% надежен. Если я хочу провести хороший бэктестинг, я приобрету программное обеспечение для бэктестинга.
О mt4 vs mt3 для торговли в реальном времени: из того, что я узнал здесь и там ;-) mt4 нельзя доверять. Иногда ордера, которые, по словам mt4, не были исполнены, на самом деле исполняются!!! Об этом сообщили брокеры. Если это правда, то брокеры, предлагающие торговлю на mt4 в реальном времени, несерьезны. Или они позаботились о том, чтобы баги mt4 не происходили на их платформе, это тоже возможно.
С другой стороны, "я собрал здесь и там" lol, что торговля в реальном времени с mt3 возможна.
Преобразуйте этот MT3 в MT4 для меня - очень просто
Привет, ребята, я был бы признателен, если бы кто-нибудь мог преобразовать это в язык MT4 для меня - наш брокер только что перешел на MT4.
Вот код:
/*[[
Name := TTM Stoch
Author := Scott Black
Link := http://www.tradethemajors.com
Separate Window := yes
First Color := Cyan
First Draw Type := Line
Use Second Data := yes
second Color := Magenta
second Draw Type := Line
Minimum Chart Limits := 0.000000
Maximum Chart Limits := 100.000000
]]*/
Inputs : Slw(8),Pds(13),Slwsignal(9);
Variables : AA(0),bb(0),aa1(0),cnt1(0);
Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);
Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);
Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");
Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);
SetLoopCount(0);
smconst = 2 / (1+SLW);
smconst1 = 2 / (1+slwsignal);
loopbegin = loopbegin+1;
For shift = 2000 Downto 0 Begin
prev = GetIndexValue2(shift+1);
AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));
MAValue2 = smconst * (aa-prev) + prev;
SetIndexValue2(shift,MAValue2);
loopbegin = loopbegin-1;
End;
loopbegin2 = loopbegin2+1;
For shift = 2000-pds downto 0 Begin
MyHigh = -999999;
MyLow = 99999999;
For counter = shift to pds + shift Begin
PRICE= GetIndexValue2(counter);
If Price > MyHigh Then
MyHigh = Price;
If pds <= 0 Then
MyHigh = Price;
If Price < MyLow Then
MyLow = Price;
If pds <= 0 Then
MyLow = Price;
end;
prev1 = GetIndexValue(shift+1);
aa1=GetIndexValue2(shift);
bb=100*(aa1-mylow)/(myhigh-mylow);
MAValue = smconst * (bb-prev1) + prev1;
SetIndexValue(shift,mavalue);
loopbegin2 = loopbegin2-1;
End;
loopbegin3 = loopbegin3+1;
For shift = 2000 downto 0 Begin
prev2=GetIndexValue2(shift+1);
prev3=GetIndexValue(shift);
MAValue3= smconst1 * (prev3-prev2) +Prev2;
SetIndexValue2(shift,mavalue3);
loopbegin3 = loopbegin3-1;
end;
/*[[
Спасибо большое!!!
Привет, ребята, я был бы признателен, если бы кто-нибудь мог перевести это на язык MT4 для меня - наш брокер только что перешел на MT4.
Вот код:
/*[[
Name := TTM Stoch
Author := Scott Black
Link := http://www.tradethemajors.com
Separate Window := yes
First Color := Cyan
First Draw Type := Line
Use Second Data := yes
second Color := Magenta
second Draw Type := Line
Minimum Chart Limits := 0.000000
Maximum Chart Limits := 100.000000
]]*/
Inputs : Slw(8),Pds(13),Slwsignal(9);
Variables : AA(0),bb(0),aa1(0),cnt1(0);
Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);
Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);
Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");
Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);
SetLoopCount(0);
smconst = 2 / (1+SLW);
smconst1 = 2 / (1+slwsignal);
loopbegin = loopbegin+1;
For shift = 2000 Downto 0 Begin
prev = GetIndexValue2(shift+1);
AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));
MAValue2 = smconst * (aa-prev) + prev;
SetIndexValue2(shift,MAValue2);
loopbegin = loopbegin-1;
End;
loopbegin2 = loopbegin2+1;
For shift = 2000-pds downto 0 Begin
MyHigh = -999999;
MyLow = 99999999;
For counter = shift to pds + shift Begin
PRICE= GetIndexValue2(counter);
If Price > MyHigh Then
MyHigh = Price;
If pds <= 0 Then
MyHigh = Price;
If Price < MyLow Then
MyLow = Price;
If pds <= 0 Then
MyLow = Price;
end;
prev1 = GetIndexValue(shift+1);
aa1=GetIndexValue2(shift);
bb=100*(aa1-mylow)/(myhigh-mylow);
MAValue = smconst * (bb-prev1) + prev1;
SetIndexValue(shift,mavalue);
loopbegin2 = loopbegin2-1;
End;
loopbegin3 = loopbegin3+1;
For shift = 2000 downto 0 Begin
prev2=GetIndexValue2(shift+1);
prev3=GetIndexValue(shift);
MAValue3= smconst1 * (prev3-prev2) +Prev2;
SetIndexValue2(shift,mavalue3);
loopbegin3 = loopbegin3-1;
end;
/*[[
Привет, Скотт...
Попробуйте это....
Хелкас,
боюсь, что это не совсем сработало. Зайдите на www.compoundfx.com/mt3stoch.jpg, чтобы увидеть, как это должно выглядеть на графике MT3 - я пытался загрузить это, но не получилось.
Спасибо за ваши усилия, возможно, это поможет?
Когда я строю график в MT4, я вижу только пурпурную линию, а не голубую - хотя я вижу, что вход есть.
Скотт
Привет,
Во-первых hellkas Я буду признателен, если вы сохраните заголовок моего файла после конвертации mql индикатора с помощью моего инструмента Mql2Mq4 !!!
Тогда это нормально, что конвертированный индикатор не работает должным образом, если вы посмотрите в Metatrade 4 в журнале сообщений эксперта TabSheet (Panel) вы увидите "Zero Devide exception" как на этой картинке. В скрипте индикатора вы используете оператор divide, причем иногда NULL:-( отсюда и ошибка, и повторяю, в Metatrade 3 исключений на это не выдавалось, тем не менее в Metatrade 4.
Я выложил переделанный вариант, который работает как на MT 3, и вы можете видеть, какие изменения я сделал.
До свидания
yousky,
Большое спасибо, все выглядит идеально! Я ценю это.
-SB
Тыски,
Хорошо, после дальнейшего рассмотрения, он еще не полностью готов. Он все еще дает мне ложные показания на MT4, т.е. линии не пересекаются там, где они должны быть. Я использовал код, который вы разместили здесь. Есть идеи?
SB