//================================================== ============================================ // // // // // //================================================== ============================================ extern int MA1_Period=7; // 1차 MA 기간 extern int MA2_Period=13; // 2차 MA 기간 extern int MA1_Method=1; // MA1 계산 방식 (SMA=0,EMA=1,SMMA=2,LWMA=3) extern int MA2_Method=1; // MA2 계산 방식 (SMA=0,EMA=1,SMMA=2,LWMA=3) 외부 정수 MA1_Price=0; // MA1 가격 계산 방법 외부 int MA2_Price=0; // MA2 가격 계산 방법 외부 int MA1_Shift=1; // 타임 시프트 MA1 외부 int MA2_Shift=1; // 타임 시프트 MA2 외부 이중 로트 = 0.01; // 고정 로트 extern int 미끄러짐 = 0; // 시장 주문에 대한 가격 편차 int New_Bar; // 0/1 새로운 막대가 형성되었다는 사실 정수 시간_0; // 새 막대 시작 시간
int PosClose; // 교차 방향 정수 합계; // 오픈 주문 수 이중 MA1_0; // 첫 번째 MA의 현재 값(분홍색) 이중 MA1_1; // 첫 번째 MA의 이전 값(분홍색) 이중 MA2_0; // 두 번째 MA의 현재 값(파란색) 이중 MA2_1; // 두 번째 MA의 이전 값(파란색) int 주문구매; // 1 = 매수 주문이 존재한다는 사실 int 주문판매; // 1 = 매도 주문이 존재한다는 사실 //================================================== ============================================ 정수 초기화() {
} //================================================== ============================================ 정수 시작() {
이중 가격;
int total=OrdersTotal(); // 총 주문 수 for(int i=total-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // 주문 선택 { if(OrderType()==OP_BUY) // 구매 주문이 있는 경우 { 주문 구매 = 1; if(CrossPositionClose()==1) // 충족되면 주문을 닫습니다. { // 조건 CrossPositionClose()=1 가격=시장정보(Symbol(),MODE_BID); OrderClose(OrderTicket(),OrderLots(),price,slippage, CLR_NONE ); } } if(OrderType()==OP_SELL) // 구매 주문이 있는 경우 { 주문판매=1; if(CrossPositionClose()==2) // 충족되면 주문을 닫습니다. { // 조건 CrossPositionClose()=2 가격=시장정보(Symbol(),MODE_ASK); OrderClose(OrderTicket(),OrderLots(),가격,슬립페이지,CLR_NONE); } } } }
New_Bar=0; // 먼저 제로 아웃 if (Time_0 != Time[0]) // 바 시작 시간이 이미 다른 경우 { New_Bar=1; // 그리고 여기에 새로운 막대가 있습니다. 시간_0 = 시간[0]; // 새 막대의 시작 시간을 기억합니다. }
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // 첫 번째 MA의 현재 값 MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // 첫 번째 MA의 이전 값 MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // 두 번째 MA의 현재 값 MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // 두 번째 MA의 이전 값
감사합니다만 정확한 해결책을 원합니다. 따라서 현재 막대는 고려되지 않고 이전 막대만 고려됩니다.
감사합니다만 정확한 해결책을 원합니다. 따라서 현재 막대는 고려되지 않고 이전 막대만 고려됩니다.
젠장, 내가 다른 사람의 코드를 파헤쳤습니다. 다시, 즉석에서, 여기에서 이 부분을 변경해 보십시오. 이 경우 아마도 PRICE_CLOSE 또는 0이 되어야 합니다...
다음은 시프트를 0에서 1로 변경한 코드입니다. 도움이 될까요?
//================================================== ============================================
//
//
//
//
//
//================================================== ============================================
extern int MA1_Period=7; // 1차 MA 기간
extern int MA2_Period=13; // 2차 MA 기간
extern int MA1_Method=1; // MA1 계산 방식 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=1; // MA2 계산 방식 (SMA=0,EMA=1,SMMA=2,LWMA=3)
외부 정수 MA1_Price=0; // MA1 가격 계산 방법
외부 int MA2_Price=0; // MA2 가격 계산 방법
외부 int MA1_Shift=1; // 타임 시프트 MA1
외부 int MA2_Shift=1; // 타임 시프트 MA2
외부 이중 로트 = 0.01; // 고정 로트
extern int 미끄러짐 = 0; // 시장 주문에 대한 가격 편차
int New_Bar; // 0/1 새로운 막대가 형성되었다는 사실
정수 시간_0; // 새 막대 시작 시간
int PosClose; // 교차 방향
정수 합계; // 오픈 주문 수
이중 MA1_0; // 첫 번째 MA의 현재 값(분홍색)
이중 MA1_1; // 첫 번째 MA의 이전 값(분홍색)
이중 MA2_0; // 두 번째 MA의 현재 값(파란색)
이중 MA2_1; // 두 번째 MA의 이전 값(파란색)
int 주문구매; // 1 = 매수 주문이 존재한다는 사실
int 주문판매; // 1 = 매도 주문이 존재한다는 사실
//================================================== ============================================
정수 초기화()
{
}
//================================================== ============================================
정수 시작()
{
이중 가격;
int total=OrdersTotal(); // 총 주문 수
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // 주문 선택
{
if(OrderType()==OP_BUY) // 구매 주문이 있는 경우
{
주문 구매 = 1;
if(CrossPositionClose()==1) // 충족되면 주문을 닫습니다.
{ // 조건 CrossPositionClose()=1
가격=시장정보(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage, CLR_NONE );
}
}
if(OrderType()==OP_SELL) // 구매 주문이 있는 경우
{
주문판매=1;
if(CrossPositionClose()==2) // 충족되면 주문을 닫습니다.
{ // 조건 CrossPositionClose()=2
가격=시장정보(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),가격,슬립페이지,CLR_NONE);
}
}
}
}
New_Bar=0; // 먼저 제로 아웃
if (Time_0 != Time[0]) // 바 시작 시간이 이미 다른 경우
{
New_Bar=1; // 그리고 여기에 새로운 막대가 있습니다.
시간_0 = 시간[0]; // 새 막대의 시작 시간을 기억합니다.
}
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // 첫 번째 MA의 현재 값
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // 첫 번째 MA의 이전 값
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // 두 번째 MA의 현재 값
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // 두 번째 MA의 이전 값
반품;
}
//================================================== ============================================
int CrossPositionClose()
{
닫기 = 0; // 개가 묻힌 곳입니다!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // 하향식 교차 {
{
닫기 = 1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // 상향 교차
{
닫기 = 2;
}
반환(PosClose); // 교차 방향을 반환합니다.
}
//================================================== ============================================
//================================================== ============================================
int MAMethod(int MA_Method)
{
스위치(MA_메소드)
{
사례 0: return(0); // MODE_SMA=0 반환
사례 1: return(1); // MODE_EMA=1을 반환합니다.
사례 2: return(2); // MODE_SMMA=2를 반환
사례 3: return(3); // MODE_LWMA=3을 반환합니다.
}
}
//================================================== ============================================
int MAPrice(int MA_Price)
{
스위치(MA_Price)
{
사례 0: 반환(PRICE_CLOSE); // PRICE_CLOSE=0 반환
사례 1: 반환(PRICE_OPEN); // PRICE_OPEN=1을 반환합니다.
사례 2: return(PRICE_HIGH); // PRICE_HIGH=2를 반환합니다.
사례 3: return(PRICE_LOW); // PRICE_LOW=3을 반환합니다.
사례 4: return(PRICE_MEDIAN); // PRICE_MEDIAN=4를 반환합니다.
사례 5: 반환(PRICE_TYPICAL); // PRICE_TYPICAL=5를 반환합니다.
사례 6: 반환(PRICE_WEIGHTED); // PRICE_WEIGHTED=6을 반환합니다.
}
}
//================================================== ===========================================
Sepulca, 나는 이미 그것을 시도했습니다. 컴파일러는 맹세합니다.
안되는데 바로 해볼게....
Sepulca, 덕분에 코드가 작동합니다. 나는 교대조를 그 자리로 되돌려 놓았습니다.
이 코드가 작동하는지 확인하기 위해 더 긴 기간 동안 확인하고 며칠 동안 고통을 겪을 것입니다.