이미 많은 질문에 대한 답변이 있고 일반적인 EA 작성에 대한 매우 좋은 예를 찾을 수 있다고 생각합니다. 귀하의 질문에 대해 : 귀하의 EA를 테스트하지 않았으므로 모르겠습니다. 다른 사람의 EA를 테스트할 때의 문제는 그 아이디어와 논리를 알아야 하고 코드 자체에서 "읽기"가 불가능한 경우가 많다는 것입니다. 우리가 이야기한 코드 조각은 닫힌 막대에서 2개의 평균 교차를 감지하는 방법에 관한 것이며 그 코드는 그 일을 하고 있을 뿐입니다. 그래서 "SL이나 TP와는 아무 상관이 없다"고 말한 것입니다.
문안 인사
믈라덴
안녕하세요 Mladen님, 다시 한 번 번거롭게 해서 죄송합니다. 내 코드를 살펴보니 내 TP와 SL뿐만 아니라 때때로 내 매수 및 매도 주문도 꺼져 있습니다. 나는 당신이 codersgurus와 내가 가지고 있었고 내 코드를 기반으로 한 동일한 튜토리얼 세트에서 나에게 준 강의에 대한 링크를 살펴 보았습니다. 심각하게 코드에서 내 오류의 원인을 찾을 수 없는 것 같습니다.
MA의 십자가는 Long 및 Short 주문과 함께 작동해야 하는 것처럼 작동하지만, 테스트하기 위해 기본 ASK 기능을 수행한 경우에도 입력 및 종료가 엉망이 되는 경우가 있습니다. 여기에서 빛을 비춰주세요.
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익 을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
int err=GetLastError(); Print(err);
각 주문 관리 기능 후에. 전문가/include/stderror.mqh 파일에서 찾을 수 있는 오류 설명(주문과 함께 발생할 수 있는 많은 오류가 있습니다(가능한 오류 코드 및 설명 목록 참조). 가능한 각각의 모든 오류를 모니터링해야 함) 알려진 오류 코드(위의 코드 줄), 무슨 일이 일어나고 있는지 추측하는 대신 특정 오류 수정에 집중할 수 있습니다.
tkuan77: 안녕하세요 Mladen님, 다시 한 번 번거롭게 해서 죄송합니다. 내 코드를 살펴보니 내 TP와 SL뿐만 아니라 때때로 내 매수 및 매도 주문도 꺼져 있습니다. 나는 당신이 codersgurus와 내가 가지고 있었고 내 코드를 기반으로 한 동일한 튜토리얼 세트에서 나에게 준 강의에 대한 링크를 살펴 보았습니다. 심각하게 코드에서 내 오류의 원인을 찾을 수 없는 것 같습니다.
MA의 십자가는 Long 및 Short 주문과 함께 작동해야 하는 것처럼 작동하지만, 테스트하기 위해 기본 ASK 기능을 수행한 경우에도 입력 및 종료가 엉망이 되는 경우가 있습니다. 여기에서 빛을 비춰주세요.
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
int err=GetLastError(); Print(err);
각 주문 관리 기능 후에. 전문가/include/stderror.mqh 파일에서 찾을 수 있는 오류 설명(주문과 함께 발생할 수 있는 많은 오류가 있습니다(가능한 오류 코드 및 설명 목록 참조). 가능한 각각의 모든 오류를 모니터링해야 함) 알려진 오류 코드(위의 코드 줄), 무슨 일이 일어나고 있는지 추측하는 대신 특정 오류 수정에 집중할 수 있습니다.
안녕 믈라덴
ECN/STP 문제를 지적해 주셔서 감사합니다. 나는 당신이 그것을 언급하기 전까지 그것들에 대해 몰랐습니다. 나는 당신이 제안한 것처럼 변경을 수행했지만 지금은 나에게 최악의 상황이 되었습니다. 입장 및 퇴장 문제가 계속될 뿐만 아니라 현재 SL이 누락되었습니다. 이게 생각보다 어렵네요.
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
int err=GetLastError(); Print(err);
각 주문 관리 기능 후에. 전문가/include/stderror.mqh 파일에서 찾을 수 있는 오류 설명(주문과 함께 발생할 수 있는 많은 오류가 있습니다(가능한 오류 코드 및 설명 목록 참조). 가능한 각각의 모든 오류를 모니터링해야 함) 알려진 오류 코드(위의 코드 줄), 무슨 일이 일어나고 있는지 추측하는 대신 특정 오류 수정에 집중할 수 있습니다.
Hey Mladen, 며칠간 도움을 주셔서 감사합니다. 내 코드에서 입력 및 종료 오류를 일으키는 오류를 찾았습니다 .
나는 당신이 나에게 보여준 링크 아래에서 수업을 찾으려고 노력하고 있지만 그것들은 일반적인 수업이며, 특히 Henderson의 지표에 대한 정보를 찾고 있습니다...
또한 게시된 스레드를 살펴본 후 다음 사항을 알고 싶습니다.
-간단하고 이해하기 쉬운 언어로 대략 몇 개의 막대가 지나고 색이 변하는지 묻고 싶습니다.
즉, 선의 색상이 파란색에서 분홍색으로 바뀌기까지 최대 몇 개의 막대가 필요합니까? 불행히도 나는 멋진 용어를 이해하지 못하며 전략을 계속 진행하고 시작할 수 있는 매우 간단한 대답을 듣겠습니다. 모든 차트는 높이 평가됩니다. premalmunshaw@yahoo.com 은 제 이메일 주소입니다.
불행히도 나는 귀하의 질문을 이해하지 못하므로 내가 할 일은 다시 인용하는 것뿐입니다(계산 길이는 Henderson의 필터 계산 길이를 나타냄).
계산 길이가 5이면 마지막 2개의 막대가 변경될 수 있습니다.
계산 길이가 7이면 마지막 3개 막대가 변경될 수 있습니다.
계산 길이가 9이면 마지막 4개 막대가 변경될 수 있습니다.
그보다 간단한 것은 대답할 수 없습니다. 그리고 Henderson의 필터가 어떻게 계산되는지 더 간단한 설명은 없습니다. "1+1 = 2"의 관점에서 푸리에 변환을 설명하려고 하면 그렇게 될 것입니다. 제공된 링크를 확인하십시오.
나머지: 필터 뒤에 있는 수학에 대한 링크를 얻었고, 얼마나 많은 막대가 다시 계산되었는지에 대한 정보를 얻었고, 엘리트 섹션 뉴스 스레드에서 예제도 얻었습니다. 해당 필터를 사용하는 전략으로 : 나는 재계산 지표(SSA, Henderson의 필터, 중심 TMA, 푸리에 변환, 회귀 분석 등)가 "시그널링 모드"에서 사용되어서는 안 된다고 1000개의 게시물에서 1000번 말했습니다. "추정 모드". Henderson의 필터에서 나온 신호를 쫓는다면 완전히 잘못된 길을 가고 있는 것이며 이것이 엘리트 섹션 구독을 고려하는 유일한 이유라면 구독하지 않는 것이 좋습니다.
추신: 이메일을 공개하는 것은 나쁜 습관입니다. 그렇게 하면 이메일 상자에 엄청난 양의 스팸 메시지만 수신됩니다.
__________________________________________
거래 시스템에 대한 귀하의 탐구에 최선을 다하기를 바랍니다
문안 인사
믈라덴
premalmunshaw: 믈라덴,
나는 당신이 나에게 보여준 링크 아래에서 수업을 찾으려고 노력하고 있지만 그것들은 일반적인 수업이며, 특히 Henderson의 지표에 대한 정보를 찾고 있습니다...
또한 게시된 스레드를 살펴본 후 다음 사항을 알고 싶습니다.
-간단하고 이해하기 쉬운 언어로 대략 몇 개의 막대가 지나고 색이 변하는지 묻고 싶습니다.
즉, 선의 색상이 파란색에서 분홍색으로 바뀌기까지 최대 몇 개의 막대가 필요합니까? 불행히도 나는 멋진 용어를 이해하지 못하며 전략을 계속 진행하고 시작할 수 있는 매우 간단한 대답을 듣겠습니다. 모든 차트는 높이 평가됩니다. premalmunshaw@yahoo.com 은 제 이메일 주소입니다.
"바" 기능을 사용하여 다른 방법을 생각해 냈습니다. 거래가 트리거되면 막대 기능 으로 정수 카운트를 설정하고(예: 구매 거래는 막대 122에서 트리거되므로 카운트는 122가 됨) 내 기준이 다시 트리거되면 막대 기능을 다시 호출합니다. 카운트와 비교하면 새 카운트가 이전 카운트(이 경우 122)보다 높은 경우에만 거래가 트리거됩니다.
테런스
TSD: Lessons 의 이 섹션을 보셨습니까?
이미 많은 질문에 대한 답변이 있고 일반적인 EA 작성에 대한 매우 좋은 예를 찾을 수 있다고 생각합니다. 귀하의 질문에 대해 : 귀하의 EA를 테스트하지 않았으므로 모르겠습니다. 다른 사람의 EA를 테스트할 때의 문제는 그 아이디어와 논리를 알아야 하고 코드 자체에서 "읽기"가 불가능한 경우가 많다는 것입니다. 우리가 이야기한 코드 조각은 닫힌 막대에서 2개의 평균 교차를 감지하는 방법에 관한 것이며 그 코드는 그 일을 하고 있을 뿐입니다. 그래서 "SL이나 TP와는 아무 상관이 없다"고 말한 것입니다.
문안 인사
믈라덴안녕하세요 Mladen님, 다시 한 번 번거롭게 해서 죄송합니다. 내 코드를 살펴보니 내 TP와 SL뿐만 아니라 때때로 내 매수 및 매도 주문도 꺼져 있습니다. 나는 당신이 codersgurus와 내가 가지고 있었고 내 코드를 기반으로 한 동일한 튜토리얼 세트에서 나에게 준 강의에 대한 링크를 살펴 보았습니다. 심각하게 코드에서 내 오류의 원인을 찾을 수 없는 것 같습니다.
MA의 십자가는 Long 및 Short 주문과 함께 작동해야 하는 것처럼 작동하지만, 테스트하기 위해 기본 ASK 기능을 수행한 경우에도 입력 및 종료가 엉망이 되는 경우가 있습니다. 여기에서 빛을 비춰주세요.
감사합니다.
테런스
...
테런스
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익 을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
각 주문 관리 기능 후에. 전문가/include/stderror.mqh 파일에서 찾을 수 있는 오류 설명(주문과 함께 발생할 수 있는 많은 오류가 있습니다(가능한 오류 코드 및 설명 목록 참조). 가능한 각각의 모든 오류를 모니터링해야 함) 알려진 오류 코드(위의 코드 줄), 무슨 일이 일어나고 있는지 추측하는 대신 특정 오류 수정에 집중할 수 있습니다.
안녕하세요 Mladen님, 다시 한 번 번거롭게 해서 죄송합니다. 내 코드를 살펴보니 내 TP와 SL뿐만 아니라 때때로 내 매수 및 매도 주문도 꺼져 있습니다. 나는 당신이 codersgurus와 내가 가지고 있었고 내 코드를 기반으로 한 동일한 튜토리얼 세트에서 나에게 준 강의에 대한 링크를 살펴 보았습니다. 심각하게 코드에서 내 오류의 원인을 찾을 수 없는 것 같습니다.
MA의 십자가는 Long 및 Short 주문과 함께 작동해야 하는 것처럼 작동하지만, 테스트하기 위해 기본 ASK 기능을 수행한 경우에도 입력 및 종료가 엉망이 되는 경우가 있습니다. 여기에서 빛을 비춰주세요.
감사합니다
테런스테런스
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
안녕 믈라덴
ECN/STP 문제를 지적해 주셔서 감사합니다. 나는 당신이 그것을 언급하기 전까지 그것들에 대해 몰랐습니다. 나는 당신이 제안한 것처럼 변경을 수행했지만 지금은 나에게 최악의 상황이 되었습니다. 입장 및 퇴장 문제가 계속될 뿐만 아니라 현재 SL이 누락되었습니다. 이게 생각보다 어렵네요.
//--- 입력 매개변수
외부 이중 TakeProfit=1000.0;
외부 이중 로트=0.1;
외부 이중 StopLoss=1500.0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
int mainCrossed (이중 mainline1 , 이중 mainline2)
{
정적 int mainlast_direction = 0;
정적 int maincurrent_dirction = 0;
if(mainline1>mainline2)maincurrent_dirction = 1; // 메인 업
if(mainline1<mainline2)maincurrent_dirction = 2; //메인다운
if(maincurrent_dirction != mainlast_direction) //메인 변경됨
{
mainlast_direction = maincurrent_dirction;
반환(mainlast_direction);
}
또 다른
{
리턴(0);
}
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
int cnt, 티켓, 합계;
이중 shortEma, longEma, mainshortEma, mainlongEma;
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
if(테이크프로핏<10)
{
Print("TakeProfit이 10 미만입니다.");
리턴(0); // TakeProfit 확인
}
정수 isCrossed = 0;
이중 shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
더블 longEma1 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
이중 shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
더블 longEma2 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
이중 diff1 = shortEma1-longEma1;
이중 diff2 = shortEma2-longEma2;
mainshortEma = iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);
mainlongEma = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
int mainisCrossed = mainCrossed(mainshortEma,mainlongEma);
if ((diff1*diff2)<0)
{
if (shortEma1>longEma1)
isCrossed = 1;
그렇지 않으면 isCrossed = 2;
}
총계 = OrdersTotal();
if(총 < 1)
{
if(isCrossed == 1 && mainshortEma > mainlongEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && mainshortEma < mainlongEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print(" SELL 주문 이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // 롱 포지션 오픈
{
OrderClose(OrderTicket(),OrderLots(),Ask-StopLoss*Point,3,바이올렛);
// 닫기 위치
리턴(0); // 출구
}
else // 숏 포지션으로 이동
{
OrderClose(OrderTicket(),OrderLots(),Bid+StopLoss*Point,3,바이올렛);
// 닫기 위치
리턴(0); // 출구
}
}
}
리턴(0);
}
//+----------------------------------------------- -------------------+
테런스
첫 번째 : 귀하의 브로커 ECN/STP는 어떻습니까? 그렇다면 손절매를 배치하고 주문 개설과 함께 이익을 얻을 수 없지만 먼저 0으로 설정된 주문을 열고 손절매를 설정하고/하거나 이미 열린 주문에 대해 이익을 얻기 위해 OrderModify()를 사용해야 합니다. .
두 번째 : 또한 터미널 창의 전문가 탭에 기록된 내용이 있는지 항상 확인하십시오(일부 오류가 거기에 기록되어 있는지 확인하십시오. 그러면 무슨 일이 일어나고 왜 그런지 알게 될 것입니다.
세 번째 : 다음과 같이 줄을 배치하는 것이 좋습니다.
Hey Mladen, 며칠간 도움을 주셔서 감사합니다. 내 코드에서 입력 및 종료 오류를 일으키는 오류를 찾았습니다 .
문안 인사
테런스
1개 이상의 거래 열기
안녕 모두, 나는 내 EA가 여러 거래를 열 수 있도록 노력하고 있지만 지금까지 나는 1 거래로 제한할 수 있습니다.
내 목표는 간단합니다.
LWMA 10이 LWMA 20 아래로 교차할 때 시스템은 LWMA 10과 20이 모두 SMA 50 아래로 교차하고 긴 거래의 경우 그 반대의 경우에 매도합니다.
EA를 2개 이하의 거래로 제한하고 싶지만 코드를 변경하면 기준당 1개의 거래가 열리는 대신 한 번에 2개의 거래가 열립니다.
카운터 시스템이나 다른 것을 설정해야 합니까? 아니면 내 거래 중 하나에 이미 TP 또는 SL이 있을 때 반응하도록 카운터를 설정하려면 어떻게 해야 합니까?
누군가 내 코드에 문제가 있는지 알려주세요.
많은 감사와 안부
테런스
//--- 입력 매개변수
외부 이중 TakeProfit=500.0;
외부 이중 로트=0.1;
외부 이중 StopLoss=500.0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
int cnt, 티켓, 합계;
이중 shortEma, longEma, mainshortEma, mainlongEma;
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
if(테이크프로핏<10)
{
Print("TakeProfit이 10 미만입니다.");
리턴(0); // TakeProfit 확인
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,0);
정수 isCrossed = 0;
이중 shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
더블 longEma1 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
이중 shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
더블 longEma2 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
이중 diff1 = shortEma1-longEma1;
이중 diff2 = shortEma2-longEma2;
mainshortEma = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
if ((diff1*diff2)<0)
{
if (shortEma1>longEma1)
isCrossed = 1;
그렇지 않으면 isCrossed = 2;
}
총계 = OrdersTotal();
if(총 < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print(" SELL 주문 이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
if(총 == 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
리턴(0);
}
//+----------------------------------------------- -------------------+
질문
믈라덴,
나는 당신이 나에게 보여준 링크 아래에서 수업을 찾으려고 노력하고 있지만 그것들은 일반적인 수업이며, 특히 Henderson의 지표에 대한 정보를 찾고 있습니다...
또한 게시된 스레드를 살펴본 후 다음 사항을 알고 싶습니다.
-간단하고 이해하기 쉬운 언어로 대략 몇 개의 막대가 지나고 색이 변하는지 묻고 싶습니다.
즉, 선의 색상이 파란색에서 분홍색으로 바뀌기까지 최대 몇 개의 막대가 필요합니까? 불행히도 나는 멋진 용어를 이해하지 못하며 전략을 계속 진행하고 시작할 수 있는 매우 간단한 대답을 듣겠습니다. 모든 차트는 높이 평가됩니다. premalmunshaw@yahoo.com 은 제 이메일 주소입니다.
이 패키지를 활성화하는 데 39달러를 지불하려고 합니다.
긍정적인 답변을 기대합니다!
문안 인사,
프리멀 먼쇼
솔직히 말해서 나는 당신이 묻는 것을 이해하지 못합니다
언제 색이 바뀌냐고 묻는다면 답은 기울기가 변할 때입니다.
색상을 변경하도록 코딩된 방법을 묻는 경우 이 섹션에서 찾아야 하는 답변: 수업 ....
불행히도 나는 귀하의 질문을 이해하지 못하므로 내가 할 일은 다시 인용하는 것뿐입니다(계산 길이는 Henderson의 필터 계산 길이를 나타냄).
그보다 간단한 것은 대답할 수 없습니다. 그리고 Henderson의 필터가 어떻게 계산되는지 더 간단한 설명은 없습니다. "1+1 = 2"의 관점에서 푸리에 변환을 설명하려고 하면 그렇게 될 것입니다. 제공된 링크를 확인하십시오.
나머지: 필터 뒤에 있는 수학에 대한 링크를 얻었고, 얼마나 많은 막대가 다시 계산되었는지에 대한 정보를 얻었고, 엘리트 섹션 뉴스 스레드에서 예제도 얻었습니다. 해당 필터를 사용하는 전략으로 : 나는 재계산 지표(SSA, Henderson의 필터, 중심 TMA, 푸리에 변환, 회귀 분석 등)가 "시그널링 모드"에서 사용되어서는 안 된다고 1000개의 게시물에서 1000번 말했습니다. "추정 모드". Henderson의 필터에서 나온 신호를 쫓는다면 완전히 잘못된 길을 가고 있는 것이며 이것이 엘리트 섹션 구독을 고려하는 유일한 이유라면 구독하지 않는 것이 좋습니다.
추신: 이메일을 공개하는 것은 나쁜 습관입니다. 그렇게 하면 이메일 상자에 엄청난 양의 스팸 메시지만 수신됩니다.
__________________________________________
거래 시스템에 대한 귀하의 탐구에 최선을 다하기를 바랍니다
문안 인사
믈라덴
믈라덴,
나는 당신이 나에게 보여준 링크 아래에서 수업을 찾으려고 노력하고 있지만 그것들은 일반적인 수업이며, 특히 Henderson의 지표에 대한 정보를 찾고 있습니다...
또한 게시된 스레드를 살펴본 후 다음 사항을 알고 싶습니다.
-간단하고 이해하기 쉬운 언어로 대략 몇 개의 막대가 지나고 색이 변하는지 묻고 싶습니다.
즉, 선의 색상이 파란색에서 분홍색으로 바뀌기까지 최대 몇 개의 막대가 필요합니까? 불행히도 나는 멋진 용어를 이해하지 못하며 전략을 계속 진행하고 시작할 수 있는 매우 간단한 대답을 듣겠습니다. 모든 차트는 높이 평가됩니다. premalmunshaw@yahoo.com 은 제 이메일 주소입니다.
이 패키지를 활성화하는 데 39달러를 지불하려고 합니다.
긍정적인 답변을 기대합니다!
문안 인사,
프리멀 먼쇼믈라덴,
내 거래에 TP 또는 SL이 있을 때 카운터 점프를 트리거할 수 있도록 내 거래에 카운터를 설정할 수 있는 방법이 있습니까?
문안 인사
테런스
안녕 모두, 나는 내 EA가 여러 거래를 열 수 있도록 노력하고 있지만 지금까지 나는 1 거래로 제한할 수 있습니다.
내 목표는 간단합니다.
LWMA 10이 LWMA 20 아래로 교차할 때 시스템은 LWMA 10과 20이 모두 SMA 50 아래로 교차하고 긴 거래의 경우 그 반대의 경우에 매도합니다.
EA를 2개 이하의 거래로 제한하고 싶지만 코드를 변경하면 기준당 1개의 거래가 열리는 대신 한 번에 2개의 거래가 열립니다.
카운터 시스템이나 다른 것을 설정해야 합니까? 아니면 내 거래 중 하나에 이미 TP 또는 SL이 있을 때 반응하도록 카운터를 설정하려면 어떻게 해야 합니까?
누군가 내 코드에 문제가 있는지 알려주세요.
많은 감사와 안부
테런스
//--- 입력 매개변수
외부 이중 TakeProfit=500.0;
외부 이중 로트=0.1;
외부 이중 StopLoss=500.0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
int cnt, 티켓, 합계;
이중 shortEma, longEma, mainshortEma, mainlongEma;
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
if(테이크프로핏<10)
{
Print("TakeProfit이 10 미만입니다.");
리턴(0); // TakeProfit 확인
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,0);
int isCrossed = 0;
이중 shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
더블 longEma1 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,1);
이중 shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
더블 longEma2 = iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,2);
이중 diff1 = shortEma1-longEma1;
이중 diff2 = shortEma2-longEma2;
mainshortEma = iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0);
if ((diff1*diff2)<0)
{
if (shortEma1>longEma1)
isCrossed = 1;
그렇지 않으면 isCrossed = 2;
}
총계 = OrdersTotal();
if(총 < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
if(총 == 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
리턴(0);
}
//+----------------------------------------------- -------------------+...
이 기능을 사용해 보세요.
{
int openedOrders = 0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == type) openedOrders++;
}
return(openedOrders);
}
[/PHP]
To count opened buy orders, call it like this :
to count opened sell orders, call it like this :
[PHP]int openedSells = countOpened(OP_SELL);믈라덴,
내 거래에 TP 또는 SL이 있을 때 카운터 점프를 트리거할 수 있도록 내 거래에 카운터를 설정할 수 있는 방법이 있습니까?
문안 인사
테런스안녕 믈라덴
"바" 기능을 사용하여 다른 방법을 생각해 냈습니다. 거래가 트리거되면 막대 기능 으로 정수 카운트를 설정하고(예: 구매 거래는 막대 122에서 트리거되므로 카운트는 122가 됨) 내 기준이 다시 트리거되면 막대 기능을 다시 호출합니다. 카운트와 비교하면 새 카운트가 이전 카운트(이 경우 122)보다 높은 경우에만 거래가 트리거됩니다.
그러나 여전히 기준당 1개가 아닌 2개의 거래를 함께 트리거하고 있습니다. 왜 그런가요?
도와주세요
감사합니다
테런스
//--- 입력 매개변수
외부 이중 TakeProfit=530.0;
외부 이중 로트=0.1;
외부 이중 StopLoss=520.0;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- -------------------+
정수 시작()
{
//----
int cnt, 티켓, 합계;
이중 shortEma, longEma, mainshortEma, mainlongEma;
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
if(테이크프로핏<10)
{
Print("TakeProfit이 10 미만입니다.");
리턴(0); // TakeProfit 확인
}
shortEma = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,0);
정수 isCrossed = 0;
이중 shortEma1 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,1);
더블 longEma1 = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,1);
이중 shortEma2 = iMA(NULL,0,10,0,MODE_LWMA,PRICE_CLOSE,2);
더블 longEma2 = iMA(NULL,0,25,0,MODE_LWMA,PRICE_CLOSE,2);
이중 diff1 = shortEma1-longEma1;
이중 diff2 = shortEma2-longEma2;
mainshortEma = iMA(NULL,0,113,0,MODE_EMA,PRICE_CLOSE,0);
if ((diff1*diff2)<0)
{
if (shortEma1>longEma1)
isCrossed = 1;
그렇지 않으면 isCrossed = 2;
}
int BarCounter, BarCounter2;
총계 = OrdersTotal();
if(총 < 1)
{
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
BarCounter = 막대;
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma < mainshortEma)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
BarCounter = 막대;
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
if(총 == 1)
{
BarCounter2 = 막대;
if(isCrossed == 1 && shortEma > mainshortEma && longEma > mainshortEma && BarCounter2 > BarCounter)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point,Ask+TakeProfit*Point,
"내 EA",12345,0,녹색);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());
BarCounter = BarCounter2;
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
if(isCrossed == 2 && shortEma < mainshortEma && longEma BarCounter)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point,Bid-TakeProfit*Point,
"내 EA",12345,0,레드);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
BarCounter = BarCounter2;
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
리턴(0);
}
리턴(0);
}
이 기능을 사용해 보세요.
{
int openedOrders = 0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != MagicNumber) continue;
if(OrderType() == type) openedOrders++;
}
return(openedOrders);
}
[/PHP]
To count opened buy orders, call it like this :
to count opened sell orders, call it like this :
[PHP]int openedSells = countOpened(OP_SELL);