이 MT3를 MT4로 변환 - 매우 쉽습니다. - 페이지 2

 

이 MT3를 MT4로 변환 - 매우 쉽습니다.

MT4에서 MT3로 갈아타려고 합니다.

첫 번째 전문 고문 편집을 막 마쳤습니다.

MT와 MQL4에 대해 충분히 배우고 마침내 전략을 프로그래밍하는 데 약 4주가 걸렸지만 지금은 프로그램을 MQL2로 변환할 수 있을 것 같습니다.

이 포럼에서 읽은 내용에 따르면 MT4의 장점은 없습니다.

내가 읽고 EA 백테스팅을 통해 배운 것은 MT4 전략 테스터 가 작동하지 않는다는 것입니다. 이런 이유만으로도 MT3로 정확한 백테스트를 할 수 있도록 스위치를 만드는 데 며칠을 더 투자하는 것이 합리적이라고 생각합니다.

이미 MT3를 다운로드하여 설치하고 편집기 사전을 살펴보았습니다. MT4보다 MT3의 기능이 적은 것을 알 수 있지만 큰 문제가 될 것이라고는 생각하지 않습니다.

내가 크게 의존하고 있던 MQL4 EA의 기능 중 하나는 주문이 채워지면 미끄러지면서 변경될 수 있는 원래 보류 주문 가격을 저장하기 위한 OrderMagicNumber였습니다.

MQL2 주문에는 OrderMagicNumber가 없지만 MQL2 사전에서 OrderValue라는 함수가 설명에서 함수가 주문의 주석(VAL_COMMENT)을 검색할 수 있다고 말합니다.

댓글을 이용해서 원하는 가격을 저장할 수 있다면 MT3로 갈아타도 될 것 같아요. 그러나 사전에서 주문 주석을 설정하는 방법을 찾을 수 없었습니다. SetOrder 함수 설명은 "주석"을 매개변수 중 하나로 나열하지 않습니다.

MQL2의 이 기능에 익숙한 사람이 주문 설명이 어떻게 설정되는지 알려줄 수 있습니까?

 
BC Brett:

이 포럼에서 읽은 내용에 따르면 MT4의 장점은 없습니다.

내가 읽고 EA 백테스팅을 통해 배운 것은 MT4 전략 테스터가 작동하지 않는다는 것입니다. 이런 이유만으로도 MT3로 정확한 백테스트를 할 수 있도록 스위치를 만드는 데 며칠을 더 투자하는 것이 합리적이라고 생각합니다.

그래서, MT3 백테스터 가 MT4 백테스터보다 더 안정적이라는 것을 어디서 읽었습니까???

나는 당신이 이것에 대해 매우 잘못 알고 있다고 생각합니다!

MT4 백테스팅은 매우 신뢰할 수 있지만 보유하고 있는 이력 데이터의 품질과 모델링 품질 %에 따라 다릅니다.

MT4 프로그래밍에서 수행할 수 있는 방식으로 MQL2에서 보낸 주문에 "코멘트"를 추가하거나 "MagicNumbers"를 할당할 수 없습니다. MT4 프로그래밍은 MQL2 프로그래밍보다 고급인데 왜 뒤로 이동합니까?

 

여기에서 MT4 백테스팅에 대해 읽을 수 있습니다. http://www.strategybuilderfx.com/forums/showthread.php?t=15309&page=1&pp=8

(페이지에 액세스할 수 없는 경우 회원가입을 해야 합니다 - 무료입니다)

 

여기저기서 수집한 내용에 따르면 백테스팅에 대해 약간 진지한 사람들은 mt3 또는 mt4가 아닌 WealthLab, Amibroker 또는 MetaStocks와 같은 소프트웨어를 사용합니다.

아마도 mt4 백 테스팅은 인트라바 데이터를 사용하지 않는다면 괜찮을 것 입니다. 예를 들어, 일일 막대로 작업하는 경우 일일 막대의 시작 및 닫기 값만 사용해야 합니다(StopLosses 또는 Take Profit을 설정한 경우 높음 및 낮음도 사용하지 않음). 다른 건 없습니다.

그 이유는 "모델링 품질"이 말하더라도 REAL 데이터를 사용하는 유일한 mt4 백테스팅 방법은 " 공개 가격만 "이기 때문입니다.

"모든 틱" 및 "제어점" 방법은 멋진 동화입니다. 개인적으로, 나는 동화 데이터 백 테스팅을 기반으로 돈을 거래하지 않을 것입니다.

나는 여전히 mt4를 배우고 있지만 내 경험상 mt4 백 테스팅을 다른 방법으로 사용하지 않을 것입니다. 내가 제안한 방법이 100% 신뢰할 수 있는지도 100% 확신할 수 없습니다. 백테스팅을 잘하고 싶다면 백테스팅 소프트웨어를 구입하겠습니다.

라이브 거래를 위한 mt4 대 mt3 정보: 여기저기서 수집한 것에서 ;-) mt4는 신뢰할 수 없습니다. 때로는 mt4가 실행되지 않은 주문이 실제로 실행됩니다!! 이것은 브로커에 의해보고되었습니다. 이것이 사실이라면 mt4 라이브 거래를 제공하는 중개인은 심각하지 않습니다. 또는 mt4 버그가 플랫폼에서 발생하지 않았는지 확인했습니다. 그것도 가능합니다.

한편, 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;

/*[[

매우 감사합니다!!

 
scott TTM:
안녕하세요 여러분, 누군가 이것을 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;

/*[[

매우 감사합니다!!

안녕 스콧...

이 시도....

파일:
ttm_stoch.mq4  5 kb
 

헬카스,

나는 그것이 잘 작동하지 않았다는 것을 두려워합니다. www.compoundfx.com/mt3stoch.jpg로 이동하여 MT3 차트에서 어떻게 보여야 하는지 확인하세요. 업로드를 시도했지만 작동하지 않았습니다.

노력해 주셔서 감사합니다. 도움이 될까요?

MT4에서 플롯할 때 시안색이 아닌 마젠타색 선만 보입니다. 입력이 있는 것을 볼 수는 있지만.

스콧

 

안녕,

첫 번째 지옥 내 도구 Mql2Mq4로 mql 표시기를 변환한 후 내 파일 헤더를 유지해 주셔서 감사합니다!!!

그러면 변환된 것이 제대로 작동하지 않는 것이 정상이며, Expert 메시지 로그 TabSheet(Panel)에서 Metatrade 4를 보면 이 그림과 같이 "Zero Devide 예외"가 표시됩니다. 표시기 스크립트에서 나누기 연산자를 사용하고 때로는 NULL :-(이 오류가 발생하기 때문에 반복합니다. Metatrade 3에서는 예외가 발생하지 않았지만 Metatrade 4에서는 예외가 생성되지 않았습니다.

변환된 것을 MT 3에서처럼 작동하게 하고 내가 어떤 유형의 변경을 수행했는지 볼 수 있습니다.

안녕

파일:
exception.jpg  52 kb
ttmstoch.mq4  5 kb
 

유스키,

정말 감사합니다. 완벽해 보입니다! 감사합니다.

-SB

 

유스키,

좋아, 추가 검토 후에 아직 완전히 거기에 있지 않습니다. 그것은 여전히 MT4에서 잘못된 판독 값을 제공합니다. 즉, 선이 있어야 할 곳을 교차하지 않습니다. 여기에 입력한 코드를 사용했습니다. 어떤 아이디어?

SB