여러분, 안녕하세요! 저는 일반 표준 지표에 대한 많은 최초의 Expert Advisors와 마찬가지로 Expert Advisors를 작성하는 방법을 배우고 있습니다. 방금 작성했습니다. 이제 작업이 복잡해졌지만 코드가 어떻게 생겼는지 모르겠습니다. 일반적으로 조건이 생겼을 때 포지션이 열리고 닫힐 때 같은 조건을 유지하면서 테이크업을 한다고 하면 새로운 포지션이 열리지 않고 반대의 조건이 생겼을 때만 열리도록 만드는 방법 , 등. 감사해요!!!
도움말에 거의 준비된 예 준비된 예가 있습니다.
int i,accTotal=OrdersHistoryTotal();
for(i=0;i<accTotal;i++)
{
//---- 선택 결과 확인
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==거짓)
{
Print("기록 데이터베이스에 액세스하는 동안 오류가 발생했습니다(",GetLastError(),")");
부서지다;
}
주문 마감 시간을 기억해야 합니다.
주문 마감 시간을 이전 반복의 마감 시간과 비교
if (마감 시간이 더 길고 거래 유형이 매수 또는 매도인 경우)
그런 다음 현재 주문 시간과 거래 유형을 기억하십시오.
// 결과적으로 사이클이 끝날 때 마지막으로 마감된 주문 유형을 알 수 있습니다.
}
이 같은 .
이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
3.3. Expert Advisor를 사용하여 클라이언트 터미널을 통해 포지션을 열면 클라이언트는 손절매 및/또는 이익실현 주문 수준을 지정할 수 없습니다. 고객이 이러한 주문을 하기를 원하는 경우 5.16 - 5.22 및 9.13 - 9.16 조항에 따라 기존 위치를 수정할 수 있습니다.
프로그래밍 방식으로 확인할 수 있는지 궁금합니다. 제가 이해하기로는 아닙니다. 프로그램에서 처음에는 브로커가 설정한 조건을 고려하여 포지션 개설/보류 주문 기능을 작성해야 합니다.
이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
프로그래밍 방식으로 확인할 수 있는지 궁금합니다. 제가 이해하기로는 아닙니다. 프로그램에서 처음에는 브로커가 설정한 조건을 고려하여 포지션 개설/보류 주문 기능을 작성해야 합니다.
어떻게 든 주문 규칙이 완전히 명확하지 않습니다. 가능한 것과 불가능한 것을 데모에서 플레이해 보십시오. 내가 이해하는 한, 프로그래밍 방식으로 주문하고 수정하는 것을 막을 수 있는 것은 아무것도 없습니다. 포지션을 개설한 후 연결을 끊고 중단 없이 두지 않는 한 권리는 어쩐지 이상합니다.
이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
프로그래밍 방식으로 확인할 수 있는지 궁금합니다. 제가 이해하기로는 아닙니다. 프로그램에서 처음에는 브로커가 설정한 조건을 고려하여 포지션 개설/보류 주문 기능을 작성해야 합니다.
문제 없습니다. 심지어 (개인 용도가 아닌 경우, 자신이 어떤 계정(거래 조건 및 누구로부터)을 사용해야 하는지 알고 있기 때문에), 그러나 귀하가 조언자를 주문하고 클라이언트 자신이 아직 어떤 계정과 위치를 결정하지 않은 경우 한 번에 가져 와서 중지를 설정할 수있는 유형의 계정에서도 사용하면 기본적으로 모든 유형의 주문을 설치할 때 이러한 수준의 값이 0 인 고문을 만든 다음 수정합니다 (작동합니다 모든 유형의 주문 및 특정 사무실의 중지 및 인수 수준을 설정하고 후속 수정하는 옵션을 사용하여 거래 작업을 수행할 때 아무도 확인 요구 사항 및 제한을 취소하지 않았습니다.
어떻게 든 주문 규칙이 완전히 명확하지 않습니다. 가능한 것과 불가능한 것을 데모에서 플레이해 보십시오. 내가 이해하는 한, 프로그래밍 방식으로 주문하고 수정하는 것을 막을 수 있는 것은 아무것도 없습니다.포지션을 개설한 후 연결을 끊고 중단 없이 두지 않는 한 권리는 어쩐지 이상합니다.
))) 아니다. 당신은 나를 전혀 이해하지 못했습니다. 나는 "프로그래밍 방식으로 설치"가 아니라 프로그래밍 방식으로 결정하는 것에 대해 썼습니다. 일부 유형의 계정에서는 즉시포지션을 개설하고 스탑/테이크를 설정할 수 없으며, 이는 나에게 더 바람직하고/안전합니다. mql5 에서 내가 틀리지 않았다면 이것을 결정할 수 있을 것 같다. 이 순간을 정의하고 정의에 따라 사용할 기능을 선택할 수 있기를 바랍니다.
문제 없습니다. 심지어 (개인 용도가 아닌 경우, 자신이 어떤 계정(거래 조건 및 누구로부터)을 사용해야 하는지 알고 있기 때문에), 그러나 귀하가 조언자를 주문하고 클라이언트 자신이 아직 어떤 계정과 위치를 결정하지 않은 경우 한 번에 가져 와서 중지를 설정할 수있는 유형의 계정에서도 사용하면 기본적으로 모든 유형의 주문을 설치할 때 이러한 수준의 값이 0 인 고문을 만든 다음 수정합니다 (작동합니다 모든 유형의 주문 및 특정 사무실의 중지 및 인수 수준을 설정하고 후속 수정하는 옵션을 사용하여 거래 작업을 수행할 때 아무도 확인 요구 사항 및 제한을 취소하지 않았습니다.
예, 해결 방법이 있으면 문제가 없습니다. 가지고 있는 것을 사용하고 올바르게 사용하기만 하면 됩니다.))
로마 인.그리고ivandurak 은 답변해 주셔서 감사합니다. 하지만 여전히 확인하기 어렵습니다. 다른 포럼에서 이 작업을 수행하는 방법에 대한 제안을 찾았지만 아직 일반적인 코드에는 적용할 수 없습니다.
int BuyTrue, SellTrue; // 위의 플래그로 사용할 변수를 정의합니다. .... //--- 구매 조건 if (BuyTrue==0 && ... and plus your other conditions) // 포즈를 열기 위한 조건 { .... 주문 보내기(....); //주문을 여는 함수 BuyTrue=1; // BuyTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다. // 따라서 매수 신호가 반복되면 거래가 열리지 않습니다. SellTrue=0; // SellTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다. // 따라서 다음 거래는 Sell만 됩니다. .... }
//--- 매도 조건 if (SellTrue==0 && ... and plus your other conditions) // 포즈를 여는 조건 { .... 주문 보내기(....); //주문을 여는 함수 SellTrue=1; // SellTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다. // 따라서 Sell 신호가 반복되면 거래가 열리지 않습니다. 구매 참=0; // BuyTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다. // 따라서 다음 거래는 Buy만 됩니다. .... }
로마 인.그리고ivandurak 은 답변해 주셔서 감사합니다. 하지만 여전히 확인하기 어렵습니다. 다른 포럼에서 이 작업을 수행하는 방법에 대한 제안을 찾았지만 아직 일반적인 코드에는 적용할 수 없습니다.
int BuyTrue, SellTrue; // 위의 플래그로 사용할 변수를 정의합니다. .... //--- 구매 조건 if (BuyTrue==0 && ... and plus your other conditions) // 포즈를 열기 위한 조건 { .... 주문 보내기(....); //주문을 여는 함수 BuyTrue=1; // BuyTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다. // 따라서 매수 신호가 반복되면 거래가 열리지 않습니다. SellTrue=0; // SellTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다. // 따라서 다음 거래는 Sell만 됩니다. .... }
//--- 매도 조건 if (SellTrue==0 && ... and plus your other conditions) // 포즈를 여는 조건 { .... 주문 보내기(....); //주문을 여는 함수 SellTrue=1; // SellTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다. // 따라서 Sell 신호가 반복되면 거래가 열리지 않습니다. 구매 참=0; // BuyTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다. // 따라서 다음 거래는 Buy만 됩니다. .... }
먼저 Ctrl+Alt+M을 통해 편집기에 코드를 붙여넣습니다(또는 메뉴 상단에서 SRC를 누름). 그렇지 않으면 좋지 않습니다. 이해할 수 있습니다. 모든 것이 하나로 병합됩니다... :-)))
둘째, 교과서, 특히 당신에게 추천 된 링크의 정보를 읽으십시오. 코드 아래에 설명이 있으며 설명의 맨 끝에 방금 그린 설명이 있습니다. 위 / 아래 가격을보고하는 방법 MA 한 번 (이 거래 조건에 대한 일회성 항목 과 유사합니다 - 플래그 사용), MAGIC을 만들기 전에 ... :-)))
추신 또는 Google 검색에서 다음을 입력하십시오. site:mql4.com 코드를 올바르게 삽입하는 방법
말해봐, 손절매를 설정할 가능성을 프로그래밍 방식으로 결정할 수 있는지/ 포지션을 열 때/보류 주문 을 할 때 또는 그 후에 즉시 이익을 얻을 수 있습니까?
설정 정지 및 이익의 수준을 미리 확인하십시오.
MarketInfo() 함수에 사용된 요청 식별자입니다. 다음 값 중 하나일 수 있습니다.
여러분, 안녕하세요! 저는 일반 표준 지표에 대한 많은 최초의 Expert Advisors와 마찬가지로 Expert Advisors를 작성하는 방법을 배우고 있습니다. 방금 작성했습니다. 이제 작업이 복잡해졌지만 코드가 어떻게 생겼는지 모르겠습니다. 일반적으로 조건이 생겼을 때 포지션이 열리고 닫힐 때 같은 조건을 유지하면서 테이크업을 한다고 하면 새로운 포지션이 열리지 않고 반대의 조건이 생겼을 때만 열리도록 만드는 방법 , 등. 감사해요!!!
도움말에 거의 준비된 예 준비된 예가 있습니다.
설정 정지 및 이익의 수준을 미리 확인하십시오.
이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
3.3. Expert Advisor를 사용하여 클라이언트 터미널을 통해 포지션을 열면 클라이언트는 손절매 및/또는 이익실현 주문 수준을 지정할 수 없습니다. 고객이 이러한 주문을 하기를 원하는 경우 5.16 - 5.22 및 9.13 - 9.16 조항에 따라 기존 위치를 수정할 수 있습니다.
프로그래밍 방식으로 확인할 수 있는지 궁금합니다. 제가 이해하기로는 아닙니다. 프로그램에서 처음에는 브로커가 설정한 조건을 고려하여 포지션 개설/보류 주문 기능을 작성해야 합니다.이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
어떻게 든 주문 규칙이 완전히 명확하지 않습니다. 가능한 것과 불가능한 것을 데모에서 플레이해 보십시오. 내가 이해하는 한, 프로그래밍 방식으로 주문하고 수정하는 것을 막을 수 있는 것은 아무것도 없습니다. 포지션을 개설한 후 연결을 끊고 중단 없이 두지 않는 한 권리는 어쩐지 이상합니다.
프로그래밍 방식으로 확인할 수 있는지 궁금합니다. 제가 이해하기로는 아닙니다. 프로그램에서 처음에는 브로커가 설정한 조건을 고려하여 포지션 개설/보류 주문 기능을 작성해야 합니다.이 목록에는 특정 유형의 계정에 대한 확인이 없습니다. 다음은 NDD 계정에 대한 거래 규칙의 한 단락입니다.
문제 없습니다. 심지어 (개인 용도가 아닌 경우, 자신이 어떤 계정(거래 조건 및 누구로부터)을 사용해야 하는지 알고 있기 때문에), 그러나 귀하가 조언자를 주문하고 클라이언트 자신이 아직 어떤 계정과 위치를 결정하지 않은 경우 한 번에 가져 와서 중지를 설정할 수있는 유형의 계정에서도 사용하면 기본적으로 모든 유형의 주문을 설치할 때 이러한 수준의 값이 0 인 고문을 만든 다음 수정합니다 (작동합니다 모든 유형의 주문 및 특정 사무실의 중지 및 인수 수준을 설정하고 후속 수정하는 옵션을 사용하여 거래 작업을 수행할 때 아무도 확인 요구 사항 및 제한을 취소하지 않았습니다.
어떻게 든 주문 규칙이 완전히 명확하지 않습니다. 가능한 것과 불가능한 것을 데모에서 플레이해 보십시오. 내가 이해하는 한, 프로그래밍 방식으로 주문하고 수정하는 것을 막을 수 있는 것은 아무것도 없습니다.포지션을 개설한 후 연결을 끊고 중단 없이 두지 않는 한 권리는 어쩐지 이상합니다.
))) 아니다. 당신은 나를 전혀 이해하지 못했습니다. 나는 "프로그래밍 방식으로 설치"가 아니라 프로그래밍 방식으로 결정하는 것에 대해 썼습니다. 일부 유형의 계정에서는 즉시 포지션을 개설하고 스탑/테이크를 설정할 수 없으며, 이는 나에게 더 바람직하고/안전합니다. mql5 에서 내가 틀리지 않았다면 이것을 결정할 수 있을 것 같다. 이 순간을 정의하고 정의에 따라 사용할 기능을 선택할 수 있기를 바랍니다.
문제 없습니다. 심지어 (개인 용도가 아닌 경우, 자신이 어떤 계정(거래 조건 및 누구로부터)을 사용해야 하는지 알고 있기 때문에), 그러나 귀하가 조언자를 주문하고 클라이언트 자신이 아직 어떤 계정과 위치를 결정하지 않은 경우 한 번에 가져 와서 중지를 설정할 수있는 유형의 계정에서도 사용하면 기본적으로 모든 유형의 주문을 설치할 때 이러한 수준의 값이 0 인 고문을 만든 다음 수정합니다 (작동합니다 모든 유형의 주문 및 특정 사무실의 중지 및 인수 수준을 설정하고 후속 수정하는 옵션을 사용하여 거래 작업을 수행할 때 아무도 확인 요구 사항 및 제한을 취소하지 않았습니다.
예, 해결 방법이 있으면 문제가 없습니다. 가지고 있는 것을 사용하고 올바르게 사용하기만 하면 됩니다.))
로마 인. 그리고 ivandurak 은 답변해 주셔서 감사합니다. 하지만 여전히 확인하기 어렵습니다. 다른 포럼에서 이 작업을 수행하는 방법에 대한 제안을 찾았지만 아직 일반적인 코드에는 적용할 수 없습니다.
int BuyTrue, SellTrue; // 위의 플래그로 사용할 변수를 정의합니다.
....
//--- 구매 조건
if (BuyTrue==0 && ... and plus your other conditions) // 포즈를 열기 위한 조건
{
....
주문 보내기(....); //주문을 여는 함수
BuyTrue=1; // BuyTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다.
// 따라서 매수 신호가 반복되면 거래가 열리지 않습니다.
SellTrue=0; // SellTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다.
// 따라서 다음 거래는 Sell만 됩니다.
....
}
//--- 매도 조건
if (SellTrue==0 && ... and plus your other conditions) // 포즈를 여는 조건
{
....
주문 보내기(....); //주문을 여는 함수
SellTrue=1; // SellTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다.
// 따라서 Sell 신호가 반복되면 거래가 열리지 않습니다.
구매 참=0; // BuyTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다.
// 따라서 다음 거래는 Buy만 됩니다.
....
}
내 거래 개시 코드
총계=주문총계();
if(총<1)
{
// 미결 주문이 식별되지 않음
if(AccountFreeMargin()<(1000*Lots))
{
Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());
리턴(0);
}
// 롱포지션(BUY) 가능성 확인
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd 샘플",16384,0,Green);
if(티켓>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("구매 주문이 열렸습니다: ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
// 매도(SELL) 가능성 확인
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(티켓>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("판매 주문이 열렸습니다: ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
반환(0);
}
로마 인. 그리고 ivandurak 은 답변해 주셔서 감사합니다. 하지만 여전히 확인하기 어렵습니다. 다른 포럼에서 이 작업을 수행하는 방법에 대한 제안을 찾았지만 아직 일반적인 코드에는 적용할 수 없습니다.
int BuyTrue, SellTrue; // 위의 플래그로 사용할 변수를 정의합니다.
....
//--- 구매 조건
if (BuyTrue==0 && ... and plus your other conditions) // 포즈를 열기 위한 조건
{
....
주문 보내기(....); //주문을 여는 함수
BuyTrue=1; // BuyTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다.
// 따라서 매수 신호가 반복되면 거래가 열리지 않습니다.
SellTrue=0; // SellTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다.
// 따라서 다음 거래는 Sell만 됩니다.
....
}
//--- 매도 조건
if (SellTrue==0 && ... and plus your other conditions) // 포즈를 여는 조건
{
....
주문 보내기(....); //주문을 여는 함수
SellTrue=1; // SellTrue=1이면 포즈를 여는 조건이 완전히 충족되지 않습니다.
// 따라서 Sell 신호가 반복되면 거래가 열리지 않습니다.
구매 참=0; // BuyTrue=0이면 포즈를 여는 조건이 완전히 충족됩니다.
// 따라서 다음 거래는 Buy만 됩니다.
....
}
내 거래 개시 코드
총계=주문총계();
if(총<1)
{
// 미결 주문이 식별되지 않음
if(AccountFreeMargin()<(1000*Lots))
{
Print("돈이 없습니다. Free Margin = ", AccountFreeMargin());
리턴(0);
}
// 롱포지션(BUY) 가능성 확인
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd 샘플",16384,0,Green);
if(티켓>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("구매 주문이 열렸습니다: ",OrderOpenPrice());
}
else Print("구매 주문 열기 오류: ",GetLastError());
리턴(0);
}
// 매도(SELL) 가능성 확인
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(티켓>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("판매 주문이 열렸습니다: ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
반환(0);
}
먼저 Ctrl+Alt+M을 통해 편집기에 코드를 붙여넣습니다(또는 메뉴 상단에서 SRC를 누름). 그렇지 않으면 좋지 않습니다. 이해할 수 있습니다. 모든 것이 하나로 병합됩니다... :-)))
둘째, 교과서, 특히 당신에게 추천 된 링크의 정보를 읽으십시오. 코드 아래에 설명이 있으며 설명의 맨 끝에 방금 그린 설명이 있습니다. 위 / 아래 가격을보고하는 방법 MA 한 번 (이 거래 조건에 대한 일회성 항목 과 유사합니다 - 플래그 사용), MAGIC을 만들기 전에 ... :-)))
추신 또는 Google 검색에서 다음을 입력하십시오. site:mql4.com 코드를 올바르게 삽입하는 방법