이해해달라는 요청이 있습니다.....내가 추가한 2개의 사진을 참조하십시오. 첫 번째는 70행과 72행에 관한 1개의 오류와 2개의 경고가 있습니다. ...그림 2에서 볼 수 있듯이, 나는 교체하고 1개의 오류와 1 경고가 제거되었습니다 ...... 내 질문은 ...이 방법을 사용하는 것이 옳습니까? .... 80 행에서 여전히 뒤에있는 두 번째 경고에 대한 두 번째 질문 ... 그대로 두면 문제 없습니다. 작동 중?
이해해달라는 요청이 있습니다.....내가 추가한 2개의 사진을 참조하십시오. 첫 번째는 70행과 72행에 관한 1개의 오류와 2개의 경고가 있습니다. ...그림 2에서 볼 수 있듯이, 나는 교체하고 1개의 오류와 1 경고가 제거되었습니다 ...... 내 질문은 ...이 방법을 사용하는 것이 옳습니까? .... 80 행에서 여전히 뒤에있는 두 번째 경고에 대한 두 번째 질문 ... 그대로 두면 문제 없습니다. 작동 중?
mntiwana와 malden에게 감사드립니다. 근데 왜 또 사야해? 이 지표를 메시지로 보낼 수 있습니까?
해당 지표를 구입할 때 받은 링크가 포함된 원본 이메일을 support@forex-tsd.com 으로 보내십시오. 모두 정확하면 업데이트된 버전을 받게 됩니다.
알았어 멜란덴. 그러나 nmc 이전의 표시기는 nmc 이후보다 흥미롭게 보입니다. 내 감정만 그런 걸까?
알았어 멜란덴. 그러나 nmc 이전의 표시기는 nmc 이후보다 흥미롭게 보입니다. 내 감정만 그런 걸까?
"nmc" 버전의 결과는 "pre-nmc" 버전과 비교하여 전혀 변경되지 않습니다. "nmc"는 "new metatrader compatible"을 의미합니다.
모두 제일 좋다
왜요 ?
믈라덴,
이 ea가 작동하지 않는 이유를 알려주십시오.
//----------------------- EA 매개변수
외부 문자열
Expert_Name = "---------- 보류 중인 주문 EA v1",
Expert_Name2 = "---------- 현재 가격 세트 EntryLevel = 0";
외부 더블
엔트리 레벨 = 1.8600,
거리 = 100,
손절매 = 50,
테이크프로핏 = 50,
TrailingStop = 50;
외부 문자열
Order_Setting = "---------- 주문 설정";
외부 정수
시도 횟수 = 5,
미끄러짐 = 5,
매직넘버 = 1234;
외부 문자열
MM_Parameters = "---------- 자금 관리";
외부 더블
로트 = 0.01;
외부 부울
MM = false, // 자금 관리 사용 여부
AccountIsMicro = true; //소액계좌 사용 여부
외부 정수
위험 = 0 //10%
외부 문자열
Testing_Parameters= "---------- 백 테스트 매개변수";
외부 부울
Show_Settings = true;
//----------------------- 전역변수
정적 정수
타임프레임 = 0;
끈
TicketComment = "PendingOrderEA v2",
마지막 무역;
부울
TradeAllow = 참,
항목 허용 = true;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----------------------- 매직 넘버 생성 및 티켓 설명
//----------------------- 출처 : PENGIE
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());
//----------------------- 차트에 EA 설정 표시
//----------------------- 소스 : CODERSGURU
if(Show_Settings) subPrintDetails();
그렇지 않으면 주석("");
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----------------------- 사용자가 시간 프레임을 변경하는 동안 재계산 방지
//----------------------- 소스 : CODERSGURU
TimeFrame=기간();
리턴(0);
}
//+----------------------------------------------- -------------------+
//| |
//+----------------------------------------------- -------------------+
정수 시작()
{
더블
// 구매 레벨,
판매 수준;
정수
중앙,
티켓,
총;
//----------------------- 매수 및 매도 가격 설정
if(EntryLevel==0) EntryLevel = 입찰가;
// BuyLevel = EntryLevel + 거리*포인트;
SellLevel = EntryLevel - 거리*포인트;
// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comment("입력 가격 또는 거리가 잘못되었습니다.");
// 반환(0);
// }
//----------------------- 돈 관리를 사용하는 경우 많은 조정
if(MM) 랏 = subLotSize();
//----------------------- 엔트리
//----------------------- MAGICNUMBER 및 SYMBOL에 대한 총 주문 기준
합계 = subTotalTrade();
//----------------------- 주문을 1회만 설정
if(TradeAllow)
{
//----------------------- 거래가 없는 경우
if(총<1 && EntryAllow)
{
티켓 = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// 티켓 = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);
입장 허용 = 거짓;
리턴(0);
}
if(총계==1)
{
하위 삭제 주문();
TradeAllow = 거짓;
}
}
//----------------------- 후행 정지 섹션
if(TrailingStop>0 && subTotalTrade()>0){
총계 = OrdersTotal();
for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(주문유형()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType());
리턴(0);
}
}
}
리턴(0);
}
//----------------------- 프로그램 종료
//+----------------------------------------------- -------------------+
//| 기능 정의
//+----------------------------------------------- -------------------+
//----------------------- 자금 관리 기능
//----------------------- 소스 : CODERSGURU
이중 subLotSize()
{
이중 lotMM = MathCeil(AccountFreeMargin() * 위험 / 1000) / 100;
if(AccountIsMicro==false) //일반 계정
{
if(lotMM < 0.1) lotMM = 제비;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //마이크로 계정
{
if(lotMM < 0.01) lotMM = 제비;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
반환(lotMM);
}
//----------------------- 기호 및 MAGICNUMBER 기능에 따른 주문 수
정수 소계 거래()
{
정수
중앙,
총 = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
주문 선택(cnt,SELECT_BY_POS,MODE_TRADES);
if(주문유형()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber) 총++;
}
반환(총);
}
//----------------------- 주문 삭제 기능
무효 subDeleteOrder()
{
정수
중앙,
총 = 0;
총계 = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
스위치(주문 유형())
{
// 케이스 OP_BUYLIMIT :
// 경우 OP_BUYSTOP :
케이스 OP_SELLLIMIT:
케이스 OP_SELLSTOP:
주문삭제(주문티켓());
}
}
}
}
//----------------------- 후행 정지 기능
//----------------------- 소스 : CODERSGURU
//----------------------- 수정: 파이어데이브
void subTrailingStop(int 유형)
{
if(Type==OP_BUY) // 매수 포지션 오픈
{
if(Bid-OrderOpenPrice()>Point*TrailingStop &&
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
리턴(0);
}
}
if(Type==OP_SELL) // 매도 포지션 오픈
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)
{
if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
리턴(0);
}
}
}
}
//----------------------- 기호 및 시간 프레임 함수를 기반으로 매직 넘버 생성
//----------------------- 출처 : PENGIE
//----------------------- 수정: 파이어데이브
int subGenerateMagicNumber(int MagicNumber, 문자열 기호, int timeFrame)
{
정수 기호 = 0;
if (기호 == "EURUSD") 기호 = 1;
else if (기호 == "GBPUSD") isymbol = 2;
else if (기호 == "USDJPY") isymbol = 3;
else if (기호 == "AUDCAD") isymbol = 4;
else if (기호 == "AUDUSD") isymbol = 5;
else if (기호 == "USDCAD") isymbol = 6;
그렇지 않으면 (기호 == "EURGBP") isymbol = 7;
그렇지 않으면 (기호 == "EURJPY") isymbol = 8;
그렇지 않으면 (기호 == "EURCHF") isymbol = 9;
else if (기호 == "EURAUD") isymbol = 10;
그렇지 않으면 (기호 == "EURCAD") isymbol = 11;
else if (기호 == "GBPUSD") isymbol = 12;
else if (기호 == "GBPJPY") isymbol = 13;
else if (기호 == "GBPCHF") isymbol = 14;
else if (기호 == "GBPAUD") isymbol = 15;
그렇지 않으면 (기호 == "GBPCAD") isymbol = 16;
그렇지 않으면 기호 = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
반환 (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));
}
//----------------------- 주석 출력 기능
//----------------------- 소스 : CODERSGURU
무효 subPrintDetails()
{
문자열 sComment = "";
문자열 sp = "----------------------------------------\n";
문자열 NL = "\n";
댓글 = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
s코멘트 = s코멘트 + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
s코멘트 = s코멘트 + sp;
코멘트(sComment);
}
//----------------------- 문자열 함수에 대한 부울 변수
//----------------------- 소스 : CODERSGURU
문자열 subBoolToStr ( 부울 값)
{
if(값) 반환("참");
그렇지 않으면 반환("거짓");
}
//----------------------- 종료 함수
미리 감사드립니다.
조
믈라덴,
잘 바랍니다. 아래는 컴파일에 두 가지 오류가 있습니다. 친절하게 도와주세요
mladen, 잘 되길 바랍니다. 아래는 컴파일에 두 가지 오류가 있습니다. 친절하게 도와주세요
캔디맨752
지금 사용해보십시오 : rstochalert-4tf_1.mq4
친애하는 MLADEN,
(내 질문은 항상 코딩 도움말보다 도움말 복구에 관한 것입니다)
이해해달라는 요청이 있습니다.....내가 추가한 2개의 사진을 참조하십시오. 첫 번째는 70행과 72행에 관한 1개의 오류와 2개의 경고가 있습니다. ...그림 2에서 볼 수 있듯이, 나는 교체하고 1개의 오류와 1 경고가 제거되었습니다 ...... 내 질문은 ...이 방법을 사용하는 것이 옳습니까? .... 80 행에서 여전히 뒤에있는 두 번째 경고에 대한 두 번째 질문 ... 그대로 두면 문제 없습니다. 작동 중?
문안 인사
엠티와나
친애하는 MLADEN,
(내 질문은 항상 코딩 도움말보다 도움말 복구에 관한 것입니다)
이해해달라는 요청이 있습니다.....내가 추가한 2개의 사진을 참조하십시오. 첫 번째는 70행과 72행에 관한 1개의 오류와 2개의 경고가 있습니다. ...그림 2에서 볼 수 있듯이, 나는 교체하고 1개의 오류와 1 경고가 제거되었습니다 ...... 내 질문은 ...이 방법을 사용하는 것이 옳습니까? .... 80 행에서 여전히 뒤에있는 두 번째 경고에 대한 두 번째 질문 ... 그대로 두면 문제 없습니다. 작동 중?
문안 인사
엠티와나엠티와나
모든 것이 괜찮습니다. 당신은 변경을 확인했습니다
모든 것이 OK입니다. 당신은 변경을 확인했습니다
호기심 많은 학생을 격려해주신 원장님 정말 감사합니다.
내 안부
믈라덴,
이 ea가 작동하지 않는 이유를 알려주십시오.
//----------------------- EA 매개변수
외부 문자열
Expert_Name = "---------- 보류 중인 주문 EA v1",
Expert_Name2 = "---------- 현재 가격 세트 EntryLevel = 0";
외부 더블
엔트리 레벨 = 1.8600,
거리 = 100,
손절매 = 50,
테이크프로핏 = 50,
TrailingStop = 50;
외부 문자열
Order_Setting = "---------- 주문 설정";
외부 정수
시도 횟수 = 5,
미끄러짐 = 5,
매직넘버 = 1234;
외부 문자열
MM_Parameters = "---------- 자금 관리";
외부 더블
로트 = 0.01;
외부 부울
MM = false, // 자금 관리 사용 여부
AccountIsMicro = true; //소액계좌 사용 여부
외부 정수
위험 = 0 //10%
외부 문자열
Testing_Parameters= "---------- 백 테스트 매개변수";
외부 부울
Show_Settings = true;
//----------------------- 전역변수
정적 정수
타임프레임 = 0;
끈
TicketComment = "PendingOrderEA v2",
마지막 무역;
부울
TradeAllow = 참,
항목 허용 = true;
//+----------------------------------------------- -------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----------------------- 매직 넘버 생성 및 티켓 설명
//----------------------- 출처 : PENGIE
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period());
//----------------------- 차트에 EA 설정 표시
//----------------------- 소스 : CODERSGURU
if(Show_Settings) subPrintDetails();
그렇지 않으면 주석("");
리턴(0);
}
//+----------------------------------------------- -------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- -------------------+
정수 초기화()
{
//----------------------- 사용자가 시간 프레임을 변경하는 동안 재계산 방지
//----------------------- 소스 : CODERSGURU
TimeFrame=기간();
리턴(0);
}
//+----------------------------------------------- -------------------+
//| |
//+----------------------------------------------- -------------------+
정수 시작()
{
더블
// 구매 레벨,
판매 수준;
정수
중앙,
티켓,
총;
//----------------------- 매수 및 매도 가격 설정
if(EntryLevel==0) EntryLevel = 입찰가;
// BuyLevel = EntryLevel + 거리*포인트;
SellLevel = EntryLevel - 거리*포인트;
// if((BuyLevel-Ask)<10*Point || (Bid-SellLevel)<10*Point)
// {
// Comment("입력 가격 또는 거리가 잘못되었습니다.");
// 반환(0);
// }
//----------------------- 돈 관리를 사용하는 경우 많은 조정
if(MM) 랏 = subLotSize();
//----------------------- 엔트리
//----------------------- MAGICNUMBER 및 SYMBOL에 대한 총 주문 기준
합계 = subTotalTrade();
//----------------------- 주문을 1회만 설정
if(TradeAllow)
{
//----------------------- 거래가 없는 경우
if(총<1 && EntryAllow)
{
티켓 = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red);
// 티켓 = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green);
입장 허용 = 거짓;
리턴(0);
}
if(총계==1)
{
하위 삭제 주문();
TradeAllow = 거짓;
}
}
//----------------------- 후행 정지 섹션
if(TrailingStop>0 && subTotalTrade()>0){
총계 = OrdersTotal();
for(cnt=0;cnt<전체;cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(주문유형()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
subTrailingStop(OrderType());
리턴(0);
}
}
}
리턴(0);
}
//----------------------- 프로그램 종료
//+----------------------------------------------- -------------------+
//| 기능 정의
//+----------------------------------------------- -------------------+
//----------------------- 자금 관리 기능
//----------------------- 소스 : CODERSGURU
이중 subLotSize()
{
이중 lotMM = MathCeil(AccountFreeMargin() * 위험 / 1000) / 100;
if(AccountIsMicro==false) //일반 계정
{
if(lotMM < 0.1) lotMM = 제비;
if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
else //마이크로 계정
{
if(lotMM < 0.01) lotMM = 제비;
if(lotMM > 1.0) lotMM = MathCeil(lotMM);
if(lotMM > 100) lotMM = 100;
}
반환(lotMM);
}
//----------------------- 기호 및 MAGICNUMBER 기능에 따른 주문 수
정수 소계 거래()
{
정수
중앙,
총 = 0;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
주문 선택(cnt,SELECT_BY_POS,MODE_TRADES);
if(주문유형()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber) 총++;
}
반환(총);
}
//----------------------- 주문 삭제 기능
무효 subDeleteOrder()
{
정수
중앙,
총 = 0;
총계 = OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber)
{
스위치(주문 유형())
{
// 케이스 OP_BUYLIMIT :
// 경우 OP_BUYSTOP :
케이스 OP_SELLLIMIT:
케이스 OP_SELLSTOP:
주문삭제(주문티켓());
}
}
}
}
//----------------------- 후행 정지 기능
//----------------------- 소스 : CODERSGURU
//----------------------- 수정: 파이어데이브
void subTrailingStop(int 유형)
{
if(Type==OP_BUY) // 매수 포지션 오픈
{
if(Bid-OrderOpenPrice()>Point*TrailingStop &&
OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
리턴(0);
}
}
if(Type==OP_SELL) // 매도 포지션 오픈
{
if(OrderOpenPrice()-Ask>Point*TrailingStop)
{
if(OrderStopLoss()>Ask+Point*TrailingStop || OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
리턴(0);
}
}
}
}
//----------------------- 기호 및 시간 프레임 함수를 기반으로 매직 넘버 생성
//----------------------- 출처 : PENGIE
//----------------------- 수정: 파이어데이브
int subGenerateMagicNumber(int MagicNumber, 문자열 기호, int timeFrame)
{
정수 기호 = 0;
if (기호 == "EURUSD") 기호 = 1;
else if (기호 == "GBPUSD") isymbol = 2;
else if (기호 == "USDJPY") isymbol = 3;
else if (기호 == "AUDCAD") isymbol = 4;
else if (기호 == "AUDUSD") isymbol = 5;
else if (기호 == "USDCAD") isymbol = 6;
그렇지 않으면 (기호 == "EURGBP") isymbol = 7;
그렇지 않으면 (기호 == "EURJPY") isymbol = 8;
그렇지 않으면 (기호 == "EURCHF") isymbol = 9;
else if (기호 == "EURAUD") isymbol = 10;
그렇지 않으면 (기호 == "EURCAD") isymbol = 11;
else if (기호 == "GBPUSD") isymbol = 12;
else if (기호 == "GBPJPY") isymbol = 13;
else if (기호 == "GBPCHF") isymbol = 14;
else if (기호 == "GBPAUD") isymbol = 15;
그렇지 않으면 (기호 == "GBPCAD") isymbol = 16;
그렇지 않으면 기호 = 17;
if(isymbol<10) MagicNumber = MagicNumber * 10;
반환 (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));
}
//----------------------- 주석 출력 기능
//----------------------- 소스 : CODERSGURU
무효 subPrintDetails()
{
문자열 sComment = "";
문자열 sp = "----------------------------------------\n";
문자열 NL = "\n";
댓글 = sp;
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL;
s코멘트 = s코멘트 + sp;
sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ";
sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";
sComment = sComment + "Risk=" + DoubleToStr(Risk,0) + "%" + NL;
s코멘트 = s코멘트 + sp;
코멘트(sComment);
}
//----------------------- 문자열 함수에 대한 부울 변수
//----------------------- 소스 : CODERSGURU
문자열 subBoolToStr ( 부울 값)
{
if(값) 반환("참");
그렇지 않으면 반환("거짓");
}
//----------------------- 종료 함수
미리 감사드립니다.
조조,
mq4 파일을 첨부해 주시겠습니까? 이 방법으로 테스트하기가 매우 어렵습니다.