모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.
if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])
현재 상태 = STATE_SHORT;
그렇지 않으면 현재 상태 = STATE_LONG;
내 주문 티켓 = 0; //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 전문가 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 전문가 시작 기능 | //+----------------------------------------------- --------------------+ 정수 시작() { //---- 실수; 더블마; MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0); if (현재 상태 == STATE_LONG) { if (MA > Close[1]) // 이동 평균이 종가보다 높음 { 현재 상태 = STATE_SHORT; // 팔기 위해 뒤집기 //---열린 경우 위치를 닫습니다. if (MyOrderTicket != 0) { if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE)) { 오류 = GetLastError(); Print("위치 닫기 오류: ", err); 리턴(0); } 내 주문 티켓 = 0; } 새로 고침(); //--- 롱 포지션이 성공적으로 마감되었습니다. //--- 이제 매도 포지션을 엽니다. //--- 사용 가능한 자금 확인 MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0, NULL, 0, 0, CLR_NONE); if (MyOrderTicket<0) { 오류 = GetLastError(); Print("위치 열기 오류: ", err); 내 주문 티켓 = 0; } } } 또 다른 { if (MA < Close[1]) //이동평균이 종가보다 낮음 { 현재 상태 = STATE_LONG;
//구매를 위해 뒤집기 //---열린 경우 위치를 닫습니다. if (MyOrderTicket != 0) { if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE)) { 오류 = GetLastError(); Print("위치 닫기 오류: ", err); 리턴(0); } 내 주문 티켓 = 0; } 새로 고침(); //--- 숏 포지션이 성공적으로 마감되었습니다. //--- 이제 매수 포지션을 엽니다. //--- 사용 가능한 자금 확인 MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0, NULL, 0, 0, CLR_NONE); if (MyOrderTicket<0) { 오류 = GetLastError(); Print("위치 열기 오류: ", err); 내 주문 티켓 = 0; } } } //---- 리턴(0); }
모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.
#재산권 "제이크 선더스"
#속성 링크 "feloq@mail.ru"
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
//---- 입력 매개변수
extern int MAPeriod=26; 외부 이중 LotNumber=1.0; extern 이중 후행 정지 = 50; 외부 이중 손절매 = 50;
if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])
현재 상태 = STATE_SHORT;
그렇지 않으면 현재 상태 = STATE_LONG;
내 주문 티켓 = 0; //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 전문가 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 전문가 시작 기능 | //+----------------------------------------------- --------------------+ 정수 시작() { //---- 실수; 더블마; MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0); if (현재 상태 == STATE_LONG) { if (MA > Close[1]) // 이동 평균이 종가보다 높음 { 현재 상태 = STATE_SHORT; // 팔기 위해 뒤집기 //---열린 경우 위치를 닫습니다. if (MyOrderTicket != 0) { if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE)) { 오류 = GetLastError(); Print("위치 닫기 오류: ", err); 리턴(0); } 내 주문 티켓 = 0; } 새로 고침(); //--- 롱 포지션이 성공적으로 마감되었습니다. //--- 이제 매도 포지션을 엽니다. //--- 사용 가능한 자금 확인 MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0, NULL, 0, 0, CLR_NONE); if (MyOrderTicket<0) { 오류 = GetLastError(); Print("위치 열기 오류: ", err); 내 주문 티켓 = 0; } } } 또 다른 { if (MA < Close[1]) //이동평균이 종가보다 낮음 { 현재 상태 = STATE_LONG;
//구매를 위해 넘기기 //---열린 경우 위치를 닫습니다. if (MyOrderTicket != 0) { if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE)) { 오류 = GetLastError(); Print("위치 닫기 오류: ", err); 리턴(0); } 내 주문 티켓 = 0; } 새로 고침(); //--- 숏 포지션이 성공적으로 마감되었습니다. //--- 이제 매수 포지션을 엽니다. //--- 사용 가능한 자금 확인 MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0, NULL, 0, 0, CLR_NONE); if (MyOrderTicket<0) { 오류 = GetLastError(); Print("위치 열기 오류: ", err); 내 주문 티켓 = 0; } } } //---- 리턴(0); }
빅터, PM 좀 봐주세요.
보았다
OrderSend()는 모든 틱에서 발생합니다(내가 이해한 대로). 문제를 해결하려면 시작 함수 앞에 변수를 선언하십시오(예: int H=0 ).
추가 코드:
...........
만약 ( H==0)
{
주문보내기(ㅋㅋㅋㅋ);
}
H=1;
그리고 대수학이 필요하지 않습니다. 그리고 제한을 위해 OrdersTotal() 을 사용하지 않는 것이 좋습니다.
이것은 이해할 수 있습니다. 모든 것이 저에게 효과적입니다. 즉, 1 개의 주문을 열고 다음 틱이 열리지 않는다는 것을 의미합니다.
두 번째 주문, 두 번째 주문은 첫 번째 주문이 닫힐 때만 필요합니다.
내가 틀리지 않았다면 아마도 그렇게 되었습니까?
정수 H=0;
int F=주문 총계();
...........
if(F<1)
{
만약 ( H==0)
{
주문보내기(ㅋ ㅋㅋㅋ );
}
H=1;}
내가 틀리지 않았다면 아마도 그렇게 되었습니까?
정수 H=0;
int F=주문 총계();
...........
if(F<1)
{
만약 ( H==0)
{
주문보내기(ㅋㅋㅋㅋ);
}
H=1;}
이것은 이해할 수 있습니다. 모든 것이 저에게 효과적입니다. 즉, 1 개의 주문을 열고 다음 틱이 열리지 않는다는 것을 의미합니다.
두 번째 주문, 두 번째 주문은 첫 번째 주문이 닫힐 때만 필요합니다.
모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.
#재산권 "제이크 선더스"
#속성 링크 "feloq@mail.ru"
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
//---- 입력 매개변수
extern int MAPeriod=26;
외부 이중 LotNumber=1.0;
extern 이중 후행 정지 = 50;
외부 이중 손절매 = 50;
//---- 전역 변수
int 현재 상태;
int MyOrderTicket;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])
현재 상태 = STATE_SHORT;
그렇지 않으면 현재 상태 = STATE_LONG;
내 주문 티켓 = 0;
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----
실수;
더블마;
MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0);
if (현재 상태 == STATE_LONG)
{
if (MA > Close[1]) // 이동 평균이 종가보다 높음
{
현재 상태 = STATE_SHORT;
// 팔기 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 롱 포지션이 성공적으로 마감되었습니다.
//--- 이제 매도 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
또 다른
{
if (MA < Close[1]) //이동평균이 종가보다 낮음
{
현재 상태 = STATE_LONG;
//구매를 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 숏 포지션이 성공적으로 마감되었습니다.
//--- 이제 매수 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
//----
리턴(0);
}
여러분, 말씀해주세요! 양초가 만료될 때 포지션을 열고 닫는 방법은 무엇입니까? 즉, 새 양초가 열리면 열리고 닫힙니다.
같은 양초나 다른 양초를 닫을 때? 모든 포지션 개시 조건에 대해 캔들 종가에서 표시기의 값을 취하는 방법은 무엇입니까?
나는 거의 50-100 포지션에 대해 같은 가격으로 매수 및 매도 주문을 열었습니다.
내가 실수하지 않은 경우 하나의 주문만 열도록 하는 방법 OrdersTotal()
그렇다면 어떻게 사용합니까? 그리고 어디에 넣을까? 그렇지 않으면 이 기능이 없으면 전체 대수학을
트랜잭션에 대한 잘못된 조건은 두 MA에 대한 예를 참조하십시오.
모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.
#재산권 "제이크 선더스"
#속성 링크 "feloq@mail.ru"
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
//---- 입력 매개변수
extern int MAPeriod=26;
외부 이중 LotNumber=1.0;
extern 이중 후행 정지 = 50;
외부 이중 손절매 = 50;
//---- 전역 변수
int 현재 상태;
int MyOrderTicket;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])
현재 상태 = STATE_SHORT;
그렇지 않으면 현재 상태 = STATE_LONG;
내 주문 티켓 = 0;
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----
실수;
더블마;
MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0);
if (현재 상태 == STATE_LONG)
{
if (MA > Close[1]) // 이동 평균이 종가보다 높음
{
현재 상태 = STATE_SHORT;
// 팔기 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 롱 포지션이 성공적으로 마감되었습니다.
//--- 이제 매도 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
또 다른
{
if (MA < Close[1]) //이동평균이 종가보다 낮음
{
현재 상태 = STATE_LONG;
//구매를 위해 넘기기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 숏 포지션이 성공적으로 마감되었습니다.
//--- 이제 매수 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
//----
리턴(0);
}
이 예를 확인하십시오