포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 356

 
MA 의 MA1_Shift=1 매개변수를 변경하려고 했습니다. 도움이 될 것 같습니다. 잠시 항의하겠습니다.
 
okidoki543 :
감사합니다만 정확한 해결책을 원합니다. 따라서 현재 막대는 고려되지 않고 이전 막대만 고려됩니다.

정확한 솔루션을 얻으려면 정확한 솔루션을 얻으려는 코드가 필요합니다. 그리고 코드가 없습니다. 그래서 해결책은...
 
всokidoki543 :
감사합니다만 정확한 해결책을 원합니다. 따라서 현재 막대는 고려되지 않고 이전 막대만 고려됩니다.


젠장, 내가 다른 사람의 코드를 파헤쳤습니다. 다시, 즉석에서, 여기에서 이 부분을 변경해 보십시오. 이 경우 아마도 PRICE_CLOSE 또는 0이 되어야 합니다...

   MA1_0= iMA ( NULL , 0 , MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1 );     // Текущее    значение 1-й МА
   MA1_1= iMA ( NULL , 0 , MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 2 );     // Предыдущее значение 1-й МА
   MA2_0= iMA ( NULL , 0 , MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1 );     // Текущее    значение 2-й МА
   MA2_1= iMA ( NULL , 0 , MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 2 );     // Предыдущее значение 2-й МА
 

다음은 시프트를 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, 나는 이미 그것을 시도했습니다. 컴파일러는 맹세합니다.
 
okidoki543 :
Sepulca, 나는 이미 그것을 시도했습니다. 컴파일러는 맹세합니다.

안되는데 바로 해볼게....
 
젠장, 이제 맹세하지 않습니다. 엉망으로 만들어서 죄송합니다. 어떤 이유로 오류가 더 일찍 나타났습니다. (
 
무화과가 아닙니다 맹세하지 않습니다 .... 당신을 위해 테스트 ..... 이미 변경했습니다, 저자를 용서하십시오 ....
 
마우스가 덜거덕거리거나 다른 것이 있으면 한 번에 포럼에 있는 두 개의 게시물 답변이 클릭 한 번으로 열립니다. 그럼 반복문을 지워야지....... 그건 그렇고, 이 글을 확인해볼게....
 

Sepulca, 덕분에 코드가 작동합니다. 나는 교대조를 그 자리로 되돌려 놓았습니다.

이 코드가 작동하는지 확인하기 위해 더 긴 기간 동안 확인하고 며칠 동안 고통을 겪을 것입니다.