//------------------------------------------------ --------------------
// 수정 stoploss.mq4
// MQL4 튜토리얼에서 예제로 사용하도록 설계되었습니다.
//------------------------------------------------ --------------------
extern int Traal_Stop=10; // 거리 박해
//------------------------------------------------ --------------- 하나 --
int start() // 사양. 시작 기능
{
문자열 Symb=Symbol(); // 금융. 도구
//------------------------------------------------ --------------- 2 --
for(int i=1; i<=OrdersTotal(); i++) // 순서를 통해 루프
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // 다음이 있는 경우
{ // 주문 분석:
int Tip=주문 유형(); // 주문 유형
if(OrderSymbol()!=Symb||Tip>1)continue;// 주문이 아님
이중 SL=OrderStopLoss(); // 선택한 주문의 SL.
//------------------------------------------------ ------ 삼 --
while(true) // 루프 수정
{
이중 TS=Tral_Stop; // 초기 값
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);//최소. 거리
if (TS<Min_Dist) // 허용보다 작으면
TS=최소 거리; // 새로운 TS 값
//------------------------------------------------ --- 4 --
bool 수정=거짓; // 수정에 할당되지 않음
switch(Tip) // 주문 유형별
{
case 0 : // 주문 구매
if (NormalizeDouble(SL,Digits)< // 더 낮은 값을 원하는 경우.
NormalizeDouble(Bid-TS*Point,Digits))
{
SL=입찰가-TS*포인트; // 그런 다음 수정
문자열 텍스트 = "구매"; // 구매를 위한 텍스트
수정=참; // 수정에 할당됩니다.
}
부서지다; // 종료 스위치
case 1 : // 매도 주문
if (NormalizeDouble(SL,Digits)> // 더 높은 값을 원하는 경우.
NormalizeDouble(Ask+TS*Point,Digits)
|| NormalizeDouble(SL,Digits)==0)//또는 0
{
SL=질문+TS*포인트; // 그런 다음 수정
Text="판매"; // 판매용 텍스트
수정=참; // 수정에 할당됩니다.
}
} // 종료 스위치
if (Modify==false) // 수정하지 않은 경우
부서지다; // 종료하는 동안
//------------------------------------------------ --- 5 --
이중 TP =OrderTakeProfit(); // 선택된 주문의 TP.
doublePrice=OrderOpenPrice(); // 가격이 선택되었습니다. 주문.
int 티켓=OrderTicket(); // 선택된 번호. 주문.
경고("수정",텍스트,티켓,". 답변을 기다리는 중..");
bool Ans=OrderModify(Ticket,Price,SL,TP,0);//수정합니다!
//------------------------------------------------ --- 6 --
if (Ans==true) // 알았습니다 :)
{
Alert("주문",텍스트,티켓,"수정됨:)");
부서지다; // 수정 루프에서.
}
//------------------------------------------------ --- 7 --
정수 오류 = GetLastError(); // 작동하지 않았습니다 :(
switch(Error) // 피할 수 있는 오류
{
case 130:Alert("정지가 잘못되었습니다. 다시 시도하세요.");
새로 고침(); // 데이터 업데이트
계속하다; // 트레일에서. 반복
case 136:Alert("가격이 없습니다. 새 틱을 기다리는 중입니다..");
while(RefreshRates()==false) // 다음 틱까지
수면(1); // 루프에서 지연
계속하다; // 트레일에서. 반복
case 146:Alert("거래 하위 시스템이 사용 중입니다. 다시 시도합시다.");
수면(500); // 간단한 솔루션
새로 고침(); // 데이터 업데이트
계속하다; // 트레일에서. 반복
// 치명적인 오류
case 2 : Alert("일반 오류입니다.");
부서지다; // 종료 스위치
case 5 : Alert("클라이언트 단말기의 이전 버전입니다.");
부서지다; // 종료 스위치
case 64: Alert("계정이 차단되었습니다.");
부서지다; // 종료 스위치
case 133:Alert("거래 금지");
부서지다; // 종료 스위치
기본값: Alert("오류가 발생했습니다. ",오류);//기타. 실수
}
부서지다; // 수정 루프에서.
} // 수정 루프의 끝.
//------------------------------------------------ ------ 여덟 --
} // 주문 분석 종료.
} // 주문 열거 끝.
//------------------------------------------------ --------------- 아홉 --
반품; // start()에서 종료
}
//------------------------------------------------ -------------- 십 --
여러분, 안녕하세요...
MetaTrader 4 히스토리 파일의 경로를 수집하는 방법을 알려주십시오. 예: "c:\program files\metatrader 4\history\alpari-classic\"
고마워요, sergeev , 제가 이해한 것 같아요 ...
Print("Terminal path: ", TerminalPath() + "\\history\\" + AccountServer() + "\\");
이 줄은 편집기의 색상이 잘못되었음에도 불구하고 올바른 경로를 표시합니다. 메모장에 코드를 작성해야 합니다. 농담.
모두 좋은 저녁!
Sergey Kovalev의 교과서에서 나는 전문가를 찾았습니다. 메타에디터에 복사해서 컴파일했는데 프로그램이 안되네요. 이유가 무엇인지 알려주세요. 내가 뭔가 잘못하고 있는 것 같다.
mql로 작성되었나요?
코드를 게시
모두 좋은 저녁!
Sergey Kovalev의 교과서에서 나는 전문가를 찾았습니다. 메타에디터에 복사해서 컴파일했는데 프로그램이 안되네요. 이유가 무엇인지 알려주세요. 내가 뭔가 잘못하고 있는 것 같다.
이것을 사용하십시오:
사용자 변수에 다음을 씁니다.
고문의 시작 부분에서 우리는 다음과 같이 씁니다.
// ----------------------------- Тралим ордера ------------------------------------ TrailingRyn_b(TrailingStop,TrailingStep,Proskalz,MAGIC,WaitProfit,false);
시작한 후 사용자 루틴에서 다음을 작성합니다.
ModifError()와 같은 함수는 내 사용자 정의 함수입니다. 단지 오류 메시지 를 출력합니다. 대신 메시지를 작성하십시오.
https://docs.mql4.com/ru/indicators/iBands