Skander : 안녕하세요 여러분, 저는 Stochstick을 기반으로 간단한 Expert Advisor를 만들었습니다(최고점에서 판매, 최저점에서 구매). 누군가 이유가 무엇이며 이 오류가 무엇을 의미하는지 말해 줄 수 있습니까? 처음에는 브래킷을 어딘가에 놓는 것을 잊었다고 생각했습니다. 그러나 아니요, 여러 번 확인했습니다. 모든 것이 대괄호와 함께 순서대로 된 것 같습니다. 도움을 주시면 대단히 감사하겠습니다. 컴파일러 오류는 다음과 같습니다. ')' - 모든 제어 경로가 값을 반환하는 것은 아닙니다. Stohastic-Signals-33.mq4 177 3 ')' - 모든 제어 경로가 값을 반환하는 것은 아닙니다. Stohastic-Signals-33.mq4 210 3 //------------------------------------------------ --------------- 여덟 -- bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // 주문 마감 함수 { 더블 Close_Price=0; // 주문 종가 동안(사실) { 새로 고침(); // 데이터 업데이트 if(F_Tip==0) // 주문이 매수인 경우 ... Close_Price=입찰가; // 입찰 종가 Close_Price=묻기; // 그리고 주문이 Sell이면 종가는 Ask입니다. bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 닫기 매수 또는 매도 if (Ans_Close==true) // 알았습니다 :) 반환(참); // 닫기 함수를 종료합니다. Crit_Error=GetLastError(); // 오류 번호 수정 if (Fun_Error(Crit_Error)==1) // 오류 처리 계속하다; // 재시도 반환(거짓); // 함수 종료 } }
MetaEditor에서 컴파일 버튼을 클릭 하고 오류 메시지 를 읽으십시오 - 행 번호와 위치 번호가 있습니다
//--------------------------------------------------------------- 8 --bool Close_Order( int F_Ticket, double F_Lot, int F_Slippage, int F_Tip) // Ф-ия закрытия ордера
{
double Close_Price= 0 ; // Цена закрытия ордера while ( true )
{
....................................
continue ; // Повторная попыткаreturn ( false ); // Выход из функции
}
returnfalse ; // Компилятор хочет return в конце функции
}
SRC 버튼으로 프로그램 코드를 삽입 하세요 - 이렇게 하면 지역 독자들이 더 좋아합니다!!! 그리고 당신의 긴 발보 - BRRRRR
단추 메시지 텍스트에 소스 코드를 삽입하기 위한 것입니다. 클릭하면 코드를 붙여넣고 삽입 버튼을 클릭해야 하는 빈 창이 나타납니다.
그래픽 개체에 대한 마우스 클릭 이벤트
CHARTEVENT_OBJECT_CLICK
X 좌표
Y 좌표
이벤트가 발생한 그래픽 개체의 이름
와우, 모든 것이 괜찮은 것 같습니다)
도와주셔서 감사합니다!
"r"의 결과를 버퍼에 바인딩하여 차트에 표시하는 방법을 모르겠습니다. 알려주세요.
나는 교과서에서 예를 배울 수 없어 사람들에게 물었다.
write - ""p"의 값이 버퍼에 기록되고 차트에 표시됩니다." "일반적으로 버퍼는 for 루프를 통해 작성됩니다."
그러나 그것은 나에게 아무 말도하지 않습니다!
하나의 결과는 문자 "r"이고 그게 전부입니다. 어디에서도 찾을 수 없습니다.
하나 더
예를 들어 "r"의 결과를 매끄럽게 하는 방법
관심을 가져주셔서 감사합니다!실수는 어디에 있습니까? 테스터에서 실행할 때 함수 는 보류 주문을 삭제 하지만 때로는 삭제하지 않습니다. 왜요? 작동 원리는 다음과 같습니다. 구매 주문이 TP에 의해 마감되면 BuyLimit이 제거됩니다. 말하다
실수는 어디에 있습니까? 테스터에서 실행할 때 함수 는 보류 주문을 삭제 하지만 때로는 삭제하지 않습니다. 왜요? 작동 원리는 다음과 같습니다. 구매 주문이 TP에 의해 마감되면 BuyLimit이 제거됩니다. 말하다
OrdersTotal() != OrdersHistoryTotal()
고맙습니다.
안녕하세요.
나는 Stochstick을 기반으로 간단한 Expert Advisor를 만들었고(상단에서 판매, 하단에서 구매) 컴파일러에서 갑자기 오류가 발생합니다.
누군가 이유가 무엇이며 이 오류가 무엇을 의미하는지 말해 줄 수 있습니까? 처음에는 브래킷을 어딘가에 놓는 것을 잊었다고 생각했습니다.
그러나 아니요, 여러 번 확인했습니다. 모든 것이 대괄호와 함께 순서대로 된 것 같습니다. 도움을 주시면 대단히 감사하겠습니다.
컴파일러 오류는 다음과 같습니다. ')' - 모든 제어 경로가 값을 반환하는 것은 아닙니다. 확률적 신호-33.mq4 177 삼
다음은 EA 자체와 mq4 파일도 첨부되어 있습니다.
또한 여기에 고문을 삽입하는 것이 얼마나 아름다운지 알려주십시오(예: 편집기에서 컬러 문자로).
//+----------------------------------------------- --------------------+
//| 확률적 신호-33.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격
//+----------------------------------------------- --------------------+
부울 New_Bar=거짓; // 새 막대 플래그
외부 이중 H_line=80; // 상위(과매수) 스토캐스틱 라인
외부 이중 L_line=20; // 하한(과매도) 확률선
extern int 미끄러짐=2; // 미끄러짐
외부 정수 SL; // 주문의 SL
외부 int TP; // 주문의 TP
extern 이중 Lts; // 주문이 접수된 로트 크기
bool B_Flag=false, // 구매 신호 플래그
S_Flag=false, // SELL 신호 플래그
ORD_Buy=false, // 오픈 매수 포지션 플래그
ORD_판매=거짓; // 오픈 포지션의 플래그 매도
bool 작업=true; // EA가 작동하도록 허용하는 플래그입니다. true - 치명적인 오류가 없습니다. false - 있습니다.
문자열 기호; // 금융의 이름. 도구
정수 Crit_Error=11111111; // 치명적인 오류 번호
//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{
정수
Total, // 창의 주문 수
Tip=-1, // 유형이 선택되었습니다. 주문(B=0,S=1)
티켓; // 주문 번호
더블
M_1, M_2, M_3, // 1, 2 및 3 막대의 MAIN 값
많은; // 수량 선택된 순서대로 로트
bool Ans_Close; // 성공적인 주문 마감 플래그(1-닫힘, 0-닫지 않음)
boolAns_Open; // 성공적인 주문 오픈 플래그(1-열림, 0-열지 않음)
//------------------------------------------------ --------------- 하나 --
// 치명적인 오류 확인
if(Work==false) // 치명적인 오류
{
Alert("심각한 오류입니다. Expert Advisor가 작동하지 않습니다.");
반품; // start()에서 종료
}
//------------------------------------------------ --------------- 2 --
// 새 막대
Fun_New_Bar(); // 함수 접근
if (New_Bar==false) // 막대가 새것이 아닌 경우..
반품; // ..그럼 우리는 떠난다
//------------------------------------------------ ------------- 삼 --
// 주문에 대한 회계
기호=기호(); // fin.instr의 이름.
총=0; // 주문 수
for(int i=1; i<=OrdersTotal(); i++) // 순서를 통해 루프
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // 다음이 있는 경우
{ // 주문 분석:
if (OrderSymbol()!=Symb) 계속; // 핀란드어가 아닙니다. 도구
티켓=OrderTicket(); // 선택된 번호. 주문.
Tip=주문유형(); // 선택한 주문의 유형입니다.
Lot=OrderLots(); // 랏 수
}
또 다른
{
Alert("OrderSelect()가 오류를 반환했습니다 - ",GetLastError()); // 주문을 선택할 수 없는 경우 ...
반품; // 시작에서 종료
}
}
//------------------------------------------------ ---------- 4 --
// 거래 기준 상황 분석
M_1=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,1);// 1바
M_2=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,2);// 2바
M_3=iStochastic(NULL,0,8,3,3,MODE_EMA,0,MODE_MAIN,3);// 3바
//------------------------------------------------ ---------- 5 --
if(M_2>=H_line) // 스토하스틱이 과매수선을 넘었다면
{
if(M_3 <= M_2 && M_2 > M_1) // 스토하스틱에 상단 피크가 나타났습니다 ...
{
if(S_Flag==true) // 매도 포지션이 열려 있으면...
반품; // start()에서 종료
// 매도 포지션이 열려 있지 않으면 ...
S_Flag=참; // SELL 신호가 있음을 플래그 설정
B_Flag=거짓; // BUY 신호가 없었다는 플래그를 설정합니다.
if(ORD_Buy==true) // 열려있는 경우 주문 구매...
{
if(Tip!=0) // 확인: 주문 유형이 개설 주문 FLAG와 일치하지 않습니다...
{
작업=거짓; // Expert Advisor가 작동하지 않습니다.
Alert("주문 유형이 열린 주문의 FLAG와 일치하지 않습니다. 시작을 종료합니다."); // 불일치가 있는 경우 EA는 작업을 종료합니다.
반품; // 시작에서 종료
}
Ans_Close=Close_Order(티켓,로트,슬립페이지,팁); // 열려 있는 구매 주문을 닫습니다.
if(Ans_Close==false) // 닫기에 실패하면...
{
Alert("주문을 마감하지 못했습니다. EA가 작동을 멈춥니다.\n 심각한 오류 번호 ", Crit_Error);
반품; // 종료 시작
}
}
Ans_Open=Open_Order(Symb,Lts,SL,TP,1); // 짧은 위치 열기
if(Ans_Open==false) // Sell을 열 수 없다면...
{
Alert("주문을 열지 못했습니다. EA가 작동을 멈춥니다.\n 심각한 오류 번호 ", Crit_Error);
반품; // 종료 시작
} // Sell을 열 수 있다면...
ORD_Sell=참; // SHORT 위치가 열려 있음을 플래그 설정
ORD_구매=거짓; // LONG 위치가 없음을 플래그 설정
}
반품; // 시작에서 종료
}
//------------------------------------------------ ----------------------- 6 --
if(M_2<=L_line) // 스토하스틱이 과매도선을 넘었다면
{
if(M_3 >= M_2 && M_2 < M_1) // 하한 피크 표시(BUY SIGNAL)
{
if(B_Flag==true) // 매수 포지션이 열려 있으면...
반품; // start()에서 종료
// 매수 포지션이 열려 있지 않으면 ...
B_Flag=참; // BUY 신호가 나타난 플래그를 설정합니다.
S_Flag=거짓; // SELL 신호가 없는 플래그를 설정합니다.
if(ORD_Sell==true) // 열려있는 경우. 매도 주문,...
{
if(Tip!=1) // 확인: 주문 유형이 개설 주문 FLAG와 일치하지 않습니다...
{
작업=거짓; // Expert Advisor가 작동하지 않습니다.
Alert("주문 유형이 열린 주문의 FLAG와 일치하지 않습니다. 시작을 종료합니다."); // 불일치가 있는 경우 EA는 작업을 종료합니다.
반품; // 시작에서 종료
}
Ans_Close=Close_Order(티켓,로트,슬립페이지,팁); // 열려 있는 판매 주문을 닫습니다.
if(Ans_Close==false) // 닫기에 실패하면...
{
Alert("주문을 마감하지 못했습니다. EA가 작동을 멈춥니다.\n 심각한 오류 번호 ", Crit_Error);
반품; // 종료 시작
}
}
Ans_Open=Open_Order(Symb,Lts,SL,TP,0); // 롱 포지션 열기
if(Ans_Open==false) // Buy를 열 수 없다면...
{
Alert("주문을 열지 못했습니다. EA가 작동을 멈춥니다.\n 심각한 오류 번호 ", Crit_Error);
반품; // 종료 시작
} // Buy를 열 수 있다면...
ORD_판매=거짓; // SHORT 위치가 없음을 플래그 설정
ORD_구매=참; // LONG 위치가 열려 있음을 플래그 설정
}
반품; // 시작에서 종료
}
}
//+----------------------------------------------- ------------------- 7 --
void Fun_New_Bar() // 감지 기능 ..
{ // .. 새 막대
정적 날짜 시간 New_Time=0; // 현재 막대의 시간
New_Bar=거짓; // 새 막대가 없습니다.
if(New_Time!=Time[0]) // 시간 비교
{
New_Time=시간[0]; // 이제 시간은
New_Bar=참; // 새 막대가 있습니다.
}
}
//------------------------------------------------ --------------- 여덟 --
bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // 주문 마감 함수
{
더블 Close_Price=0; // 주문 종가
동안(사실)
{
새로 고침(); // 데이터 업데이트
if(F_Tip==0) // 주문이 매수인 경우 ...
Close_Price=입찰가; // 입찰 종가
Close_Price=묻기; // 그리고 주문이 Sell이면 종가는 Ask입니다.
bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 닫기 매수 또는 매도
if (Ans_Close==true) // 알았습니다 :)
반환(참); // 닫기 함수를 종료합니다.
Crit_Error=GetLastError(); // 오류 번호 수정
if (Fun_Error(Crit_Error)==1) // 오류 처리
계속하다; // 재시도
반환(거짓); // 함수 종료
}
}
//------------------------------------------------ --------------- 아홉 --
// 오픈 오더
bool Open_Order(문자열 F_Symb, 이중 F_Lts, int F_SL, int F_TP, int F_Tip)
{
더블 Open_Price; // 오픈 가격
문자열 Tip_Deal; // 거래 방향 (구매 또는 판매)
이중 f_sl; // 손절 주문
더블 f_tp; // 이익을 취하다
인트 티켓; // 오픈 오더 티켓
while(true) // 주문 마감 주기.
{
새로 고침(); // 데이터 업데이트
if(F_Tip==1) // SELL을 열어야 하는 경우...
{
open_price=입찰가;
Tip_Deal="OP_SELL";
f_sl=NormalizeDouble(Bid+F_SL*Point,Digits);
f_tp=NormalizeDouble(Bid-F_TP*포인트,자리수);
}
//-------------------------------- BUY를 열어야 한다면...
open_price=묻다;
Tip_Deal="OP_BUY";
f_sl=NormalizeDouble(Bid+F_SL*Point,Digits);
f_tp=NormalizeDouble(Bid-F_TP*포인트,자리수);
Ticket=OrderSend(F_Symb,Tip_Deal,F_Lts,Open_Price,2,f_sl,f_tp);//주문 열기
if (티켓 > 0) // 성공 :)
반환(참); // 함수 종료
Crit_Error=GetLastError(); // 오류 번호 수정
if (Fun_Error(Crit_Error)==1) // 오류 처리
계속하다; // 재시도
반환(거짓); // 함수 종료
}
}
//------------------------------------------------ --------------- 십 --
int Fun_Error(int Error) // 오류 처리 함수
{
스위치(오류)
{ // 피할 수 있는 오류
case 4: Alert("거래 서버가 바쁘다. 다시 시도해보자..");
수면(3000); // 간단한 솔루션
반환(1); // 함수 종료
case 135:Alert("가격이 변경되었습니다. 다시 시도해보세요..");
새로 고침(); // 데이터 업데이트
반환(1); // 함수 종료
case 136:Alert("가격이 없습니다. 새 틱을 기다리는 중입니다..");
while(RefreshRates()==false) // 다음 틱까지
수면(1); // 루프에서 지연
반환(1); // 함수 종료
case 137:Alert("브로커가 사용 중입니다. 다시 시도합니다..");
수면(3000); // 간단한 솔루션
반환(1); // 함수 종료
case 146:Alert("거래 하위 시스템이 사용 중입니다. 다시 시도하십시오..");
수면(500); // 간단한 솔루션
반환(1); // 함수 종료
// 치명적인 오류
사례 2: Alert("일반 오류입니다.");
리턴(0); // 함수 종료
사례 5: Alert("이전 터미널 버전입니다.");
작업=거짓; // 더 이상 작동하지 않음
리턴(0); // 함수 종료
case 64: Alert("계정이 차단되었습니다.");
작업=거짓; // 더 이상 작동하지 않음
리턴(0); // 함수 종료
case 133:Alert("거래가 금지됩니다.");
리턴(0); // 함수 종료
case 134:Alert("작업을 완료하기에 자금이 충분하지 않습니다.");
리턴(0); // 함수 종료
기본값: Alert("오류가 발생했습니다. ",Error); // 다른 옵션
리턴(0); // 함수 종료
}
}
//------------------------------------------------ -------------- 열하나 --
누군가 이유가 무엇이며 이 오류가 무엇을 의미하는지 말해 줄 수 있습니까? 처음에는 브래킷을 어딘가에 놓는 것을 잊었다고 생각했습니다.
그러나 아니요, 여러 번 확인했습니다. 모든 것이 대괄호와 함께 순서대로 된 것 같습니다. 도움을 주시면 대단히 감사하겠습니다.
컴파일러 오류는 다음과 같습니다. ')' - 모든 제어 경로가 값을 반환하는 것은 아닙니다. Stohastic-Signals-33.mq4 177 3
')' - 모든 제어 경로가 값을 반환하는 것은 아닙니다. Stohastic-Signals-33.mq4 210 3
//------------------------------------------------ --------------- 여덟 --
bool Close_Order(int F_Ticket,double F_Lot,int F_Slippage,int F_Tip) // 주문 마감 함수
{
더블 Close_Price=0; // 주문 종가
동안(사실)
{
새로 고침(); // 데이터 업데이트
if(F_Tip==0) // 주문이 매수인 경우 ...
Close_Price=입찰가; // 입찰 종가
Close_Price=묻기; // 그리고 주문이 Sell이면 종가는 Ask입니다.
bool Ans_Close=OrderClose(F_Ticket,F_Lot,Close_Price,F_Slippage); // 닫기 매수 또는 매도
if (Ans_Close==true) // 알았습니다 :)
반환(참); // 닫기 함수를 종료합니다.
Crit_Error=GetLastError(); // 오류 번호 수정
if (Fun_Error(Crit_Error)==1) // 오류 처리
계속하다; // 재시도
반환(거짓); // 함수 종료
}
}
MetaEditor에서 컴파일 버튼을 클릭 하고 오류 메시지 를 읽으십시오 - 행 번호와 위치 번호가 있습니다
SRC 버튼으로 프로그램 코드를 삽입 하세요 - 이렇게 하면 지역 독자들이 더 좋아합니다!!! 그리고 당신의 긴 발보 - BRRRRR
단추 메시지 텍스트에 소스 코드를 삽입하기 위한 것입니다. 클릭하면 코드를 붙여넣고 삽입 버튼을 클릭해야 하는 빈 창이 나타납니다.
MetaEditor에서 컴파일 버튼을 클릭 하고 오류 메시지 를 읽으십시오 - 행 번호와 위치 번호가 있습니다
SRC 버튼으로 프로그램 코드를 삽입 하세요 - 이렇게 하면 지역 독자들이 더 좋아합니다!!! 그리고 당신의 긴 발보 - BRRRRR
버튼은 메시지의 텍스트에 소스 코드를 삽입하기 위한 것입니다. 클릭하면 코드를 붙여넣고 삽입 버튼을 클릭해야 하는 빈 창이 나타납니다.
고맙습니다.