코딩하는 방법? - 페이지 74

 

당신은 의미합니까:

if ( ( CloseSell1_1 CloseSell2_2 ) || ( CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

[/PHP]or do you mean:

[PHP]if ( ( CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

 

고맙습니다.

지금 보니 뻔했다. 그것은 트릭을 했다. 초기 백테스트 는 좋지 않습니다. 조정할 시간입니다.

 
Big Be:
미결제 주문의 절반에 대한 중지를 변경하는 방법을 알아야 합니다. 내 이해는 이것이 예를 들어 .2 랏과 .2 로트와 같이 두 개의 주문을 시작하는 것을 의미한다는 것입니다.

내 EA는 자금 관리 계산을 기반으로 로트 수를 계산합니다.

하나의 주문에 대한 정류장이 변경된 후(도달된 가격 수준에 따라) 나는 (현재 다른) 정류장에 도달하지 않는 한 내 종료 코드가 두 주문을 모두 닫도록 할 것입니다.

다른 주문은 원래 스톱을 유지하거나 손익분기점으로 이동할 수 있습니다.

로트의 초기 수량(MM 함수에서)이 홀수인 경우 홀수 또는 10번째 로트에 대해 반올림하는 대신 두 주문 간에 고르지 않게 분할하고 싶습니다.

나는 이것이 Magic Numbers와 여기 저기에 몇 줄의 코드를 포함한다고 믿습니다. 내가 복사할 수 있는 이 모든 것이 포함된 EA가 있을 수 있습니다.

도움을 주셔서 감사합니다.

빅비

안녕하세요; 다른 곳에서 이에 대해 명시적으로 질문했지만 일부 응답이 있었고 문제의 어떤 부분이 남아 있을지 모르겠습니다. 다시 묻는 라운드가 필요합니다....

 

안녕 랄프,

ralph.ronnquist:
안녕하세요; 다른 곳에서 이에 대해 명시적으로 질문했지만 일부 응답이 있었고 문제의 어떤 부분이 남아 있을지 모르겠습니다. 다시 묻는 라운드가 필요합니다....

글쎄요, 답변 중 실제로 내 질문에 대한 답변은 없었습니다. 일부는 다른 사람의 질문에 대한 답변이었습니다.

따라서 모든 부품이 남아 있습니다. (이 스레드에 게시한 문제의 인용문은 이전 게시물을 참조하십시오.)

감사해요,

빅비

 

지정가 주문 설정 문제

안녕 남자들과 여자들,

특정 가격 수준(지정가 주문)에서 거래를 입력하기 위해 내 EA에 코드를 설정하려고 합니다. 지정가 주문의 코드는 다음과 같습니다.

ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask+10*Point,3,BuyStopLoss,0,"xx Buy",16384,0,Red);

lot & BuyStopLoss는 미리 결정된 계산 값이며, 그것을 전환하면 일반 시장 "OP_BUY" 기능으로 작동합니다. Ask+10*Point는 내가 현재 가격 이상으로 생각해 낸 임의의 값일 뿐이며 실제로 미리 결정된 BuyEntry를 일반적으로 사용합니다.

전략 테스터 에서 코드를 실행하려고 할 때 발생하는 오류는 다음과 같습니다.

"2008.02.24 16:00:08 2004.06.17 15:15 xxEA EURUSD,M15: OrderSend 오류 130"(손절매 관련 오류)

이 오류의 원인에 대한 아이디어가 있습니까? 내가 지정가 주문을 설정하는 방식에 문제가 있거나 시장가 주문과 잘 작동하는 것 같아서 전략 테스터(?)에서 지정가 주문을 실행할 수 없다고 생각합니다. 도움을 주셔서 감사합니다.

 

전문 고문 빌더?

Lonestar:
저는 Metatrader에 비교적 익숙하지 않지만 거래는 하지 않으며 Expert Adviser Builder를 사용하여 일부 EA를 만들었습니다. 대부분은 잘 작동하지만 여러 출구를 사용할 때 문제가 있습니다. OR 기능을 사용하여 논리 닫기(구매) 및 닫기(판매) 논리. AND가 있는 배수는 잘 작동하지만 OR로 만든 것을 인식하지 못합니다. 아래는 종료 코드입니다.

//+----------------------------------------------- -------------------+

//| 시그널 비긴(엑시트 매도) |

//+----------------------------------------------- -------------------+

if (CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2 ) 주문 = SIGNAL_CLOSESELL;

굵은 부분은 무시하고 있는 신호입니다. 모든 아이디어. 이것이 나를 제대로 백 테스팅하지 못하게하는 유일한 것입니다. 누구든지 도울 수 있고 백테스트가 잘 된다면 그것을 가질 수 있습니다. 닫혀야 하는 거래를 수동으로 필터링하기만 하면 유망해 보입니다.

감사해요.

Expert Advisor Builder란 무엇입니까?

 
nondisclosure007:
Expert Advisor Builder란 무엇입니까?

Gordago 또는 이것과 같은 것

 

다양한 로트 크기.

안녕,

EA의 다양한 로트 크기에 대한 코드를 얻을 수 있습니까?

예를 들어, 첫 번째 판매 주문 0.2의 경우 두 번째 판매 주문은 0.1입니다.

문안 인사,

시데시

 
Linuxser:
Gordago 또는 이것과 같은 것

감사해요. 저는 전략 테스트를 위해 Gordago를 좋아합니다(실제로 코드를 작성하지 않아도 됨). 내 EA 목적으로 사용하는 템플릿을 엉망으로 만들어야 합니다. 나는 내 자신의 코딩 스타일을 충족시키기 위해 그것이 생성하는 것에 대해 약간의 편집을 하고 있음을 발견합니다. 그러나 전반적으로 나는 감동했습니다.

Gordago가 상용 제품인 줄 알았는데? 비용이 얼마인지는 어디서도 볼 수 없습니다.

 

ERR_COMMON_ERROR #2 거래 개시 시

모두들 안녕,

요전날 NewBar 문제에 대한 훌륭한 도움을 받은 후 저는 많은 것을 배우지 못했고 학습 EA로 크게 발전했습니다. 저는 프로그래밍을 하고 있습니다. (주로 학습 연습으로 테스트하고 싶은 매우 기본적인 시스템입니다(의심할 여지 없이 수익성이 없지만 좋은 학습 연습입니다!)

스크립트를 작성하고 각각의 새로운 막대는 현재 쌍의 모든 이전 거래를 닫은 다음 20 기간 ATR 값을 취하고 ATR 값의 절반으로 이동할 때 시장에 진입하기 위해 매수 정지 및 매도 정지를 입력합니다. 오픈마켓에서. 그런 다음 테이크 프로핏은 ATR 값으로 설정됩니다(내 생각에는 그것이 절반으로 갔다면 그날의 평균 움직임에서 테이크 프로핏에 계속 도달할 가능성이 있을 수 있다고 생각합니다. 아마도 완전히 틀릴 것입니다. 여기에 있지만 어쨌든 값을 시도하도록 프로그래밍하고 싶습니다 - 전략 테스터 가 아닌 데모 계정)

나는 그것을 모두 프로그래밍했고 결국 NormalizeDouble을 사용하여 소수점 이하 추가 자릿수를 제거하는 방법을 찾았지만 이제 EA가 막대 시작 부분에서 구매 정지를 열려고 할 때 ERR_COMMON_ERROR 또는 오류 #2가 발생합니다.

이것은 정말 도움이 되지 않습니다. Open, Take Profit 및 Stop Loss에 대해 정의하는 값을 확인했는데 이 모든 것이 합리적으로 보이며 다른 것이 무엇인지 알 수 없습니다. 이보다 GetLastError의 피드백이 더 이상 없기 때문에 저녁에 좌절했습니다! 도와주세요.

ATR_Value = iATR(NULL,0,ATR_Period,0); //Get current ATR Value from chart

if (ATR_Value < (ATR_Minimum*Point)) //Check current ATR_Value to ensure it is no less than the ATR_Minimum set

{

Print("Too little range for trading. ATR_Minimum ",(ATR_Minimum*Point)," ATR_Value ",ATR_Value);

return(0);

}

double buyopen,nbuyopen,buysl,nbuysl,buytp,nbuytp,sellopen,nsellopen,sellsl,nsellsl,selltp,nselltp;

buyopen=((iOpen(NULL,0,0))+(ATR_Value*Open_Multiplier)+Open_Offset);

nbuyopen=NormalizeDouble(buyopen,Digits);

buysl=((iOpen(NULL,0,0))+(ATR_Value*SL_Multiplier)+SL_Offset);

nbuysl=NormalizeDouble(buysl,Digits);

buytp=((iOpen(NULL,0,0))+(ATR_Value*TP_Multiplier)+TP_Offset);

nbuytp=NormalizeDouble(buytp,Digits);

sellopen=((iOpen(NULL,0,0))-(ATR_Value*Open_Multiplier)-Open_Offset);

nsellopen=NormalizeDouble(sellopen,Digits);

sellsl=((iOpen(NULL,0,0))-(ATR_Value*SL_Multiplier)-SL_Offset);

nsellsl=NormalizeDouble(sellsl,Digits);

selltp=((iOpen(NULL,0,0))-(ATR_Value*TP_Multiplier)-TP_Offset);

nselltp=NormalizeDouble(sellsl,Digits);

Print("Open:",nbuyopen," TP:",nbuytp," SL:",nbuysl);

int ticketbuy;

ticketbuy=OrderSend(Symbol(),OP_BUYSTOP,Lots,nbuyopen,Max_Slippage,nbuysl,nbuytp,"Buy Order",12345,(Bar_Period-Bar_Offset),Green);

if(ticketbuy<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

int ticketsell;

ticketsell=OrderSend(Symbol(),OP_SELLSTOP,Lots,nsellopen,Max_Slippage,nsellsl,nselltp,"Buy Order",54321,(Bar_Period-Bar_Offset),Red);

if(ticketsell<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

도움을 주셔서 대단히 감사합니다. 혹시라도 봐주실 분을 위해 mt4도 첨부했습니다. 여기에는 다른 사람들의 스크립트 일부도 포함되어 있습니다. 이 스크립트는 크레딧에 포함되지 않았지만 모두 이 사이트에 게시되었습니다. (물론 내가 EA를 출시하면 크레딧을 받을 수 있습니다. 저녁에 좌절했던 이 문제를 해결하기 위해 이 글을 게시하는 것입니다.)

하워드

파일:
atr.mq4  6 kb
사유: