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

 

안녕하세요.

코드를 작성하고 이해하기 시작했습니다. 지금까지 나는 압도되었다.

MACD 히스토그램을 사용하고 트리거 선이 히스토그램 위와 아래를 교차할 때 ea 쓰기를 시작하고 싶습니다.

코드 이해를 시작하고 코드가 어떻게 거래되는지 보기 위해 실행하게 하는 간단한 프로그램 제안이 있는 사람이 있습니까?

감사해요

다니엘

 

추세선-Excel/CSV에서 가져오기=?

안녕하세요, 저는 지난 며칠간 몇 가지 간단한 스크립트, 특히 ObjectCreate(Ray=1이 있는 OBJ_TREND)를 작성했습니다. 이것이 작동하는 방식은 정말 좋지만 준비된 csv-File에서 개체를 그리는 방법은 무엇입니까? Close-Lines, 내 템플릿을 삭제하고 스크립트로 필요할 때마다 데이터를 가져올 수 있기를 원하기 때문에

이것이 어떻게 작동하는지 아는 사람이 있습니까?

CSV에는 날짜(시간 제외) 및 닫기 값이 있습니다(라인에 대해 더 많은 데이터가 필요하지 않음).

스크립트는 Ray=1을 사용하여 이 날짜에서 선을 그리고 색상을 사용자 정의해야 합니다.

스크립트는 열린 차트 (기호)를 확인하고 올바른 CSV 파일을 가져올 수도 있습니다.

누구든지 나를 도울 수 있습니까?

 

OrderDelete(OrderTicket()) 오류

안녕하세요 여러분!

저는 MQL4 프로그래밍 에 익숙하지 않지만 다른 한편으로는 C++를 알고 있습니다.

하지만 거래 기능에 몇 가지 문제가 있습니다.

이것은 내 문제입니다.

다음을 사용하여 보류 중인 주문을 만듭니다.

티켓 = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,Green);

프로그램의 다른 지점에서 삭제하고 싶습니다.

if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket());

오류 4108! 왜요 ? 티켓 번호가 정확합니다. 인쇄합니다.

그러나 내가 사용하는 경우 :

if (OrderSelect(위치, SELECT_BY_POS))OrderDelete(OrderTicket());

괜찮아!

왜요 ?

귀하의 지원과 포럼에 감사드립니다.

 

EA 종료 코드 ???

안녕하세요 여러분,

EA를 종료할 코드를 찾고 있습니다. 내가 쓴 작은 마틴게일을 게시했습니다. 계정 인출 비율에 도달하면 모든 보류 및 미결 주문을 닫을 위치에 있습니다. 또한 일일 이익 목표에 도달하면 거래를 중지할 수 있었습니다. 다음날 다시 거래를 시작합니다. (내가 그들의 코드를 사용했기 때문에 SWB Grid를 작성한 사람에게 감사합니다.)

그러나 특정 조건에 도달하면 EA를 종료하고 싶습니다. 예를 들어 Max Percentage Drawdown에 도달하고 모든 보류 중인 주문 과 열린 위치를 닫습니다. 그 시점에서 나는 차트에서 EA를 제거하고 다시 넣을 때까지 EA가 다시 거래를 시작하지 않도록 EA가 자체적으로 종료되기를 원합니다.

여기 EA가 있습니다. 제안이나 도움을 주시면 감사하겠습니다!!

감사해요,

 

"'\end_of_program' - 불균형 왼쪽 괄호"에 대한 도움이 필요합니다.

안녕하세요, 저는 EA에서 작업하고 있으며 컴파일할 때 "'\end_of_program' - 불균형 왼쪽 괄호"라는 오류 메시지가 계속 나타납니다. 일반적으로 이 오류 메시지는 왼쪽 및 오른쪽 괄호의 개수가 일정하지 않은 경우에 발생합니다. 그런데 내 코드를 높고 낮음을 확인해보니 왼쪽 괄호와 오른쪽 괄호의 개수가 같다는 것을 알았습니다. 그래서 나는 그것이 어디에서 잘못되었는지 알 수 없다는 사실에 정말 짜증이납니다. 누구든지 내 코드를 확인하고 수정 방법을 알려줄 수 있습니까? 정말 고마워. 내 코드는 아래에 게시되어 있습니다.

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

//| 브레이크아웃.mq4 |

//| 푸 |

//| |

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

#재산권 "푸우"

#속성 링크 ""

//--- 입력 매개변수

extern int LengthI=23;//시장 진입용

extern int LengthO=7;//종료

외부 이중 로트=0.1; //주문 사이즈

외부 정수 N1=14; //ATR의 마침표

extern int NLots=1; //증가 주문 매수

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

//| 전문가 초기화 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 초기화 해제 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

더블 HL롱, 롱, HS숏, LS숏;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,길이I,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,길이O,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,길이I,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,길이O,2));

int cnt, 유아용 침대, 티켓, 합계;

총계=주문총계();

만약 (총<1)

{

if (iClose(NULL,0,1)>Hlong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Long,300000,"EA Long",123,0,Green);

만약 (티켓>0)

{

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("장기주문 오픈 : ",OrderOpenPrice());

}

또 다른

Print("긴 주문을 여는 동안 오류가 발생했습니다: ",GetLastError());

리턴(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001,"EA Short",123,0,Red);

만약 (티켓>0)

{

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("짧은 주문이 열렸습니다:",OrderOpenPrice());

}

else Print("짧은 주문 열기 오류:",GetLastError());

리턴(0);

}

리턴(0);

}

for(cnt=0;cnt<전체;cnt++)

{ //10

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // 롱 포지션 오픈

{

// 닫아야 하나?

if(입찰가<=L롱)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//닫기 위치

리턴(0);

}

//후행 정지 수정

OrderModify(OrderTicket(),OrderOpenPrice(),Long,OrderTakeProfit(),0,녹색);

리턴(0);

}

또 다른

{

if(질문>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//닫기 위치

리턴(0);

}

//후행 정지 수정

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,빨간색);

리턴(0);

}

}

}

// 길고 짧은 주문 로트 합계를 얻습니다.

이중 LOrderLots=0;

이중 SOrderLots=0;

for(cnt=0,cnt<=총계,cnt++)

{

주문 선택(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//오픈 오더 증가

for(cot=0,cot<=total,cot++)

{ //1

//긴 주문에 대한 위치 추가

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) // 미결 주문이 있는 경우

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- EA pooh에 의해 열린 주문이 열린 경우 abd 유형이 Long

{ //삼

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0) ))&&LOrderLots<Lots*(i+1)) //4

{ 티켓=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000,"EA Long",123,0,Green); //5

만약 (티켓>0)

{ //6

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("장기주문 오픈 : ",OrderOpenPrice());

} //6

또 다른

Print("긴 주문을 여는 동안 오류가 발생했습니다: ",GetLastError());

부서지다;

} //5

} //4

리턴(0);

//짧은 주문에 대한 위치 추가

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ 티켓=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001,"EA Short",123,0,Red); //9

만약 (티켓>0)

{ // 10

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("짧은 주문이 열렸습니다 : ",OrderOpenPrice());

} // 10

또 다른

Print("단기 주문 열기 오류: ",GetLastError());

부서지다;

} //9

} //8

리턴(0);

} //7

} //삼

} //2

} //1

반환(0)

}

 

간단한 표시기를 코딩하려면 코더가 필요합니다.

이 작업을 수행하는 표시기를 코딩할 사람이 필요합니다.

0,50,100줄만 사용하는 간단한 피보나치에서. 막대가 50% 이상 또는 50% 미만으로 마감되었지만 둘 다 아닌 위 또는 아래에서 종가를 찾고 있는지 선택할 수 있는 옵션이 있는 경우. 따라서 50% 미만의 종가를 찾고 있다면 50 이상으로 종가가 닫힐 때마다 경고가 울리는 것을 원하지 않습니다. 소리로 알려주고 이메일 및/또는 문자를 보내도록 하고 싶습니다. 이게 가능해? 고맙습니다!!

사진: http://tinypic.com/r/dhbu6v/5

 

간단한 논리를 코딩하려고 하면 할 수 없습니다!

안녕하세요 포럼입니다.

MQL4를 충분히 잘하는 여러분을 위해 코딩하는 것은 매우 간단한 일이라고 생각합니다. 하지만 저는 초심자이고 문제가 있습니다. 여기에서 모든 강의를 읽었지만 여전히 이해할 수 없었습니다.

그래서 나는 자동 거래를 만들고 싶다

로트 크기 0.1

손절매 = 30핍

이익 목표 50핍

페어 AUDUSD

02:00 GMT와 10:00 GMT 사이에 (highprice - lowprice) < 60핍 이면 AUDUSD를 낮은 가격 - 5pips 매도 하거나 AUDUSD를 높은 가격 + 5pips에 구매합니다. 그렇지 않으면 거래가 없습니다.

 
Avasys:
안녕하세요 포럼입니다.

MQL4를 충분히 잘하는 여러분을 위해 코딩하는 것은 매우 간단한 일이라고 생각합니다. 하지만 저는 초심자이고 문제가 있습니다. 여기에서 모든 강의를 읽었지만 여전히 이해할 수 없었습니다.

그래서 나는 자동 거래를 만들고 싶다

로트 크기 0.1

손절매 = 30핍

이익 목표 50핍

페어 AUDUSD

02:00 GMT와 10:00 GMT 사이에 (highprice - lowprice) < 60핍 이면 AUDUSD를 낮은 가격 - 5pips 매도하거나 AUDUSD를 높은 가격 + 5pips에 구매합니다. 그렇지 않으면 거래가 없습니다.

[lang=pl]안녕하세요, 이 EA를 코딩하는 데 문제가 없다고 생각하지만 질문이 있습니다.

매수/매도를 원할 때? 당신은 낮은 5 높은 + 5 수준에 보류 주문 이 필요하십니까?

문안 인사,

그르제식[/lang]

 
g.pociejewski:
[lang=pl]안녕하세요, 이 EA를 코딩하는 데 문제가 없다고 생각하지만 질문이 있습니다.

매수/매도를 원할 때? 당신은 낮은 5 높은 + 5 수준에 보류 주문이 필요하십니까?

문안 인사,

그르제식[/lang]

여보세요,

도와 줘서 고맙다

예, 더 정확하게는 02:00 GMT와 10:00 GMT 시간 사이의 AUDUSD 거래 범위(고가와 저가의 차이)(이는 코드에서 매우 중요함)가 60핍 미만이므로 거래 가능한 신호입니다. 따라서 가격이 낮은 가격(02:00에서 10:00 사이)에 도달하면 매도하고 가격이 높은 가격 + 5핍에 도달하면 매수합니다.

예시

02:00 ~ 10:00 GBPUSD 저가는 1.6000, 고가는 1.6050이므로 가격이 1.5995에 도달하면 자동으로 매도하고 가격이 1.6055에 도달하면 자동으로 매수 30핍 손절매 주문을 자동으로 배치하고 50핍 은 이익을 얻습니다.

시간이 없다면 어떻게 시작해야 하는지 알려주십시오. 수업을 읽지만 작업을 수행할 연습이 없습니다.

감사해요

 
pooh123:
안녕하세요, 저는 EA에서 작업하고 있으며 컴파일할 때 "'\end_of_program' - 불균형 왼쪽 괄호"라는 오류 메시지가 계속 나타납니다. 일반적으로 이 오류 메시지는 왼쪽 및 오른쪽 괄호의 수가 홀수와 관련이 있습니다. 그런데 내 코드를 높고 낮음을 확인해보니 왼쪽 괄호와 오른쪽 괄호의 개수가 같다는 것을 알았습니다. 그래서 나는 그것이 어디에서 잘못되었는지 알 수 없다는 사실에 정말 짜증이 난다. 누구든지 내 코드를 확인하고 수정 방법을 알려줄 수 있습니까? 정말 고마워. 내 코드는 아래에 게시되어 있습니다.

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

//| 브레이크아웃.mq4 |

//| 푸 |

//| |

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

#재산권 "푸우"

#속성 링크 ""

//--- 입력 매개변수

extern int LengthI=23;//시장 진입용

extern int LengthO=7;//종료

외부 이중 로트=0.1; //주문 사이즈

외부 정수 N1=14; //ATR의 마침표

extern int NLots=1; //증가 주문 매수

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

//| 전문가 초기화 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 초기화 해제 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

더블 HL롱, 롱, HS숏, LS숏;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,길이I,2));

LLong=iLow(NULL,0,iLowest(NULL,0,1,길이O,2));

LShort=iLow(NULL,0,iLowest(NULL,0,1,길이I,2));

HShort=iHigh(NULL,0,iHighest(NULL,0,2,길이O,2));

int cnt, 유아용 침대, 티켓, 합계;

총계=주문총계();

만약 (총<1)

{

if (iClose(NULL,0,1)>Hlong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Long,300000,"EA Long",123,0,Green);

만약 (티켓>0)

{

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("장기주문 오픈 : ",OrderOpenPrice());

}

또 다른

Print("긴 주문을 여는 동안 오류가 발생했습니다: ",GetLastError());

리턴(0);

}

if (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001,"EA Short",123,0,Red);

만약 (티켓>0)

{

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("짧은 주문이 열렸습니다:",OrderOpenPrice());

}

else Print("짧은 주문 열기 오류:",GetLastError());

리턴(0);

}

리턴(0);

}

for(cnt=0;cnt<전체;cnt++)

{ //10

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // 롱 포지션 오픈

{

// 닫아야 하나?

if(입찰가<=L롱)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//닫기 위치

리턴(0);

}

//후행 정지 수정

OrderModify(OrderTicket(),OrderOpenPrice(),Long,OrderTakeProfit(),0,녹색);

리턴(0);

}

또 다른

{

if(질문>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//닫기 위치

리턴(0);

}

//후행 정지 수정

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,빨간색);

리턴(0);

}

}

}

// 길고 짧은 주문 로트 합계를 얻습니다.

이중 LOrderLots=0;

이중 SOrderLots=0;

for(cnt=0,cnt<=총계,cnt++)

{

주문 선택(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots();

if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots();

}

//오픈 오더 증가

for(cot=0,cot<=total,cot++)

{ //1

//긴 주문에 대한 위치 추가

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) // 미결 주문이 있는 경우

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- EA pooh에 의해 열린 주문이 열린 경우 abd 유형이 Long

{ //삼

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0) ))&&LOrderLots<Lots*(i+1)) //4

{ 티켓=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,Long,300000,"EA Long",123,0,Green); //5

만약 (티켓>0)

{ //6

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("장기주문 오픈 : ",OrderOpenPrice());

} //6

또 다른

Print("긴 주문을 여는 동안 오류가 발생했습니다: ",GetLastError());

부서지다;

} //5

} //4

리턴(0);

//짧은 주문에 대한 위치 추가

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ 티켓=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001,"EA Short",123,0,Red); //9

만약 (티켓>0)

{ // 10

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("짧은 주문이 열렸습니다 : ",OrderOpenPrice());

} // 10

또 다른

Print("단기 주문 열기 오류: ",GetLastError());

부서지다;

} //9

} //8

리턴(0);

} //7

} //삼

} //2

} //1

반환(0)

}

[lang=pl]안녕하세요, 약간의 실수가 있었습니다. OrderMagicNumer 함수 에 두 개의 불균형 ")"이 있습니다. 마지막에 ()를 사용해야 합니다. for 루프에서 ";"를 사용해야 합니다. 대신에 ",".

불균형 괄호를 찾아야 하는 경우 메모장 ++을 추천합니다. [/언어]

파일:
eamod.mq4  5 kb