코딩하는 방법? - 페이지 321

 
mladen:
다시오

다음과 같이 시도하십시오.

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 OrangeRed

#property indicator_color2 Silver

#property indicator_width1 2

extern int RsiPeriod = 50;

extern int RsiPrice = PRICE_CLOSE;

double work[];

double avg[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,work);

SetIndexBuffer(1,avg);

return(0);

}

int start()

{

int i,countedBars = IndicatorCounted();

if (countedBars<0) return(-1);

if (countedBars>0) countedBars--;

int limit = MathMin(Bars-countedBars,Bars-1);

for(i=limit; i>=0; i--)

{

work = iRSI(NULL,0,RsiPeriod,RsiPrice,i);

int y = iBarShift(NULL,PERIOD_D1,Time);

int x = iBarShift(NULL,PERIOD_D1,Time);

if (x!=y)

{

int k = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,y));

double average = work[k];

int c = 1;

for (int j=k-1; j>=i; j--,c++) average += work[j]; average /= c;

for ( j=k ; j>=i; j--) avg[j] = average;

}

}

return(0);

}

Mladen 시도했지만 성공하지 못했습니다.

내 지표의 예가 첨부되어 있습니다. 유일한 차이점은 계산에 있지만 다른 하나는 동일합니다.

공식과 통합할 수 있습니까? 그래서 나도 공부할 수 있다.

고맙습니다

테스트1.mq4

파일:
test1.mq4  3 kb
 

안녕 모두. 신호에 대한 코드 줄을 작성하는 데 빠른 도움말을 찾고 있습니다.

나는 신호에 Step_Indy와 EMA 십자가를 사용하고 있습니다. 내가 하고 싶은 것은 EA가 서로 10바 이내의 신호를 보낼 때만 EA가 거래에 들어가도록 하는 것입니다.

따라서 단계가 신호를 제공한다고 가정하고 EA가 MA 십자가가 있는지 확인하기 위해 10개 막대를 되돌아보고 싶습니다. 그렇다면 입력하십시오. (참고로 MA 교차 전류 신호가 긴지 확인 하고 확인하는 것을 원하지 않습니다. 10바 이내와 같이 최근의 신호였으면 합니다.)

도움을 요청하는 TIA, 나는 과거에 내가 본 어떤 EA에서도 이것을 본 적이 없다고 생각합니다.

 

다시오

코드에서 코드의 의도가 무엇인지 알 수 없습니다. 어쨌든 다음은 표시기의 "기본" 값(코드의 첫 번째 부분)으로 실제 범위를 사용하거나 코드의 두 번째 부분을 다음과 같이 사용하려는 경우 선택할 수 있는 코드입니다. "기본" 값

dasio:
Mladen 시도했지만 성공하지 못했습니다.

내 지표의 예가 첨부되어 있습니다. 유일한 차이점은 계산에 있지만 다른 하나는 동일합니다.

공식과 통합할 수 있습니까? 그래서 나도 공부할 수 있다.

고맙습니다

테스트1.mq4
파일:
_test1.mq4  2 kb
 

신호 문제

Mladen, 다시 한 번 감사합니다. 경고가 더 이상 반복되지 않고 잘 작동합니다.....하지만 정지 신호를 넣고 싶습니다.....그리고 다음 코드를 작성했습니다. 매수 및 매도 신호는 작동하지만 매수는 정지합니다 판매 중지가 작동하지 않으면 아래 코드를 참조하십시오.

//-----알라트 할당----

if(마침표()==240){

정적 날짜/시간 lastAlerted=0;

이중 ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

이중 ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

이중 RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

이중 RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

이중 b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

더블 nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

더블 b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

더블 nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// 무역 알림

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowen4trCCI> (lastAlerted!=시간[0]))

{

lastAlerted=시간[0];

Alert("구매","\n"," 현재 시간 은 ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_m_h4>di_p_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&<&nowtrCCI< (lastAlerted!=시간[0]))

{

lastAlerted=시간[0];

Alert("판매","\n","현재 시간은 ",TimeToStr(CurTime()),"\n",Symbol());

}

// 경고 중지

if((adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>|>=2trCCI (di_p_h4>=20)&&(di_p_h4>di_m_h4)&&(ist_main>ist_signal)&&(RSIP10&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&h4trCCI>b4trCCI)|&|(adx_h4>=200) >di_m_h4)&&(ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI>b4trCCI)||(adx_h4>=20)&&(di_p_h4>=20)&&(di_p_h4)&m_h4> &&(RSIP1>RSIP2)&&(nowenCCI>0&&nowenCCI>b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=시간[0]))

{

lastAlerted=시간[0];

Alert("구매 중지","\n","현재 시간은 ",TimeToStr(CurTime()),"\n",Symbol());

}

if((adx_h4>=20)&&(di_m_h4>=20)&&(di_p_h4ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&4(di=20)&&(di di_p_h4<di_m_h4)&&(ist_mainRSIP2)&&(nowenCCI<0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_hmain)&&&nowenCCI=20)&&(di_p_h4<di_m_h4)& (nowtrCCI<0&&nowtrCCI=20)&&(di_m_h4>=20)&&(di_p_h4<di_m_h4)&&(ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI<0&&nowenCCI0&&nowtrCCI)&! )

{

lastAlerted=시간[0];

Alert("매도 중지","\n","현재 시간은 ",TimeToStr(CurTime()),"\n",Symbol());

}

mladen:
다음과 같이 시도하십시오.
if(Period()==240)

{

static datetime lastAlerted=0;

double ist_main=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_MAIN,0);

double ist_signal=iStochastic(NULL,240,8,3,3,MODE_SMA,0,MODE_SIGNAL,0);

double RSIP1=iRSI(NULL,240,14,PRICE_CLOSE,0);

double RSIP2=iRSI(NULL,240,70,PRICE_CLOSE,0);

double b4enCCI=iCCI(NULL,240,6,PRICE_TYPICAL,1);

double nowenCCI=iCCI(NULL,240,6,PRICE_TYPICAL,0);

double b4trCCI=iCCI(NULL,240,14,PRICE_TYPICAL,1);

double nowtrCCI=iCCI(NULL,240,14,PRICE_TYPICAL,0);

// alerts

if((ist_main>ist_signal)&&(RSIP1>RSIP2)&&(nowenCCI >0&&nowenCCI>b4enCCI)&&(nowtrCCI>0&&nowtrCCI>b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Buy Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

if((ist_main<ist_signal)&&(RSIP1<RSIP2)&&(nowenCCI <0&&nowenCCI<b4enCCI)&&(nowtrCCI<0&&nowtrCCI<b4trCCI)&&(lastAlerted!=Time[0]))

{

lastAlerted=Time[0]; Alert("Sell Arrow","\n","Current time is ",TimeToStr(CurTime()),"\n",Symbol());

}

}
 
mladen:
dasio 코드에서 코드의 의도가 무엇인지 알 수 없습니다. 어쨌든 다음은 표시기의 "기본" 값(코드의 첫 번째 부분)으로 실제 범위를 사용하거나 코드의 두 번째 부분을 다음과 같이 사용하려는 경우 선택할 수 있는 코드입니다. "기본" 값

감사합니다.

이런 식으로 계산된 것은 의미가 없다는 것을 압니다. 하지만 매일 하는 alisys를 코딩하려고 합니다. ^^

작업의 1/3에 불과합니다.

고맙습니다

 
mladen:
dasio 코드에서 코드의 의도가 무엇인지 알 수 없습니다. 어쨌든 다음은 표시기의 "기본" 값(코드의 첫 번째 부분)으로 실제 범위를 사용하거나 코드의 두 번째 부분을 다음과 같이 사용하려는 경우 선택할 수 있는 코드입니다. "기본" 값

감사합니다. 완벽합니다.

금요일 수정사항을 추가할 수 있나요?

고맙습니다

문안 인사

 

용량

각 막대의 볼륨을 쿼리하고 싶지만 어떻게 해야 하는지 잘 모르겠습니다. 저는 mql4 프로그래밍 에 익숙하지 않지만 배우려고 노력 중입니다. 이 간단한 프로그램을 시도했지만 완전히 쓰레기일 수 있습니다. 알려주세요. 모든 제안에 감사드립니다. 아래는 막대의 볼륨을 쿼리한 다음 결과를 인쇄하는 스크립트의 시작입니다. 어디가 잘못되었는지 알려주세요!!!! 계속 컴파일하려고 하면 (프로그램 종료 브래킷 }이(가) 예상되는 오류가 하나 있습니다.

//--- 입력 매개변수

외부 이중 TakeProfit = 4;

외부 이중 손절매 = 20;

extern 이중 랏 = 0.1;

외부 이중 TrailingStop = 30;

외부 이중 볼륨more = 600;

외부 이중 체적 = 150;

//+----------------------------------------------- -------------------+

//| 전문가 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

if (볼륨=>볼륨모어)

{

인쇄("볼륨 더");

{

if (볼륨=<볼륨 없음)

{

인쇄("볼륨 작게");

if(막대<20)

{

Print("막대가 20개 미만입니다.");

{

//----

//----

리턴(0);

}

 

볼륨 을 보려는 막대의 경우 "색인"이 숫자인 볼륨을 사용합니다. metatrader 4에서 "볼륨"은 항상 틱 볼륨 임을 기억하십시오.

Tim Latham:
각 막대의 볼륨을 쿼리하고 싶지만 어떻게 해야 하는지 잘 모르겠습니다. 저는 mql4 프로그래밍에 익숙하지 않지만 배우려고 노력 중입니다. 이 간단한 프로그램을 시도했지만 완전히 쓰레기일 수 있습니다. 알려주세요. 모든 제안에 감사드립니다. 아래는 막대의 볼륨을 쿼리한 다음 결과를 인쇄하는 스크립트의 시작입니다. 어디가 잘못되었는지 알려주세요!!!! 계속 컴파일하려고 하면 (프로그램 종료 브래킷 }이(가) 예상되는 오류가 하나 있습니다.

//--- 입력 매개변수

외부 이중 TakeProfit = 4;

외부 이중 손절매 = 20;

extern 이중 로트 = 0.1;

외부 이중 TrailingStop = 30;

extern 더블 볼륨more = 600;

외부 이중 체적 = 150;

//+----------------------------------------------- -------------------+

//| 전문가 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

if (볼륨=>볼륨모어)

{

인쇄("볼륨 더");

{

if (볼륨=<볼륨 없음)

{

인쇄("볼륨 작게");

if(막대<20)

{

Print("20개 미만의 막대");

{

//----

//----

리턴(0);

}
 
jayjonbeach:
안녕 모두. 신호에 대한 코드 줄을 작성하는 데 빠른 도움말을 찾고 있습니다.

나는 신호에 Step_Indy와 EMA 십자가를 사용하고 있습니다. 내가 하고 싶은 것은 EA가 서로 10바 이내의 신호를 보낼 때만 EA가 거래에 들어가도록 하는 것입니다.

따라서 단계가 신호를 제공한다고 가정하고 EA가 MA 십자가가 있는지 확인하기 위해 10개 막대를 되돌아보고 싶습니다. 그렇다면 입력하십시오. (참고로 MA 교차 전류 신호가 긴지 확인하고 확인하는 것을 원하지 않습니다. 10바 이내와 같이 최근의 신호였으면 합니다.)

도움을 요청하는 TIA, 나는 과거에 내가 본 어떤 EA에서도 이것을 본 적이 없다고 생각합니다.

글쎄, 나는 몇 가지를 시도했지만 지금까지 아무 것도 효과가 없었습니다.

내가 이것을 시도한 방법 중 하나는 다음과 같습니다.

extern int 룩백 = 10;

외부 정수 EMA1 = 21;

외부 정수 EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest);

int trendPrev = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",길이,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

이중 TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

더블 FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-lookback; i++)

{

if (trendCurr<0)

리턴(롱);

그렇지 않으면 반환(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

if (trendCurr<0)

{

for(int i2=1; i2<=바-룩백; i2++)

{

if (trendCurr>0)

반환(짧은);

그렇지 않으면 반환(NONE);

}

}

}

반환(없음);

}

어떤 아이디어라도 감사합니다. 저도 시도했습니다(int i=1; i<=lookback; i++)

 

...

제이존비치,

변경하지 않고 루프에서 반복해서 trendCurr의 값을 테스트하고 있습니다(따라서 항상 NONE을 반환할 것입니다)

iCustom()을 루프에 넣은 다음 해당 값을 테스트하십시오. 이 같은 :

if (trendCurr>0)

{

for(int i=1; i<=lookback; i++)

{

int testValue = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",Length,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+i);

if (testValue<0) return(LONG);

}

return(NONE);

}

jayjonbeach:
글쎄, 나는 몇 가지를 시도했지만 지금까지 아무 것도 효과가 없었습니다.

내가 이것을 시도한 방법 중 하나는 다음과 같습니다.

extern int 룩백 = 10;

외부 정수 EMA1 = 21;

외부 정수 EMA2 = 55;

int GetEntrySignal()

{

int trendCurr = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",길이,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest);

int trendPrev = iCustom(NULL,StepMaTimeFrame,"StepMA_v7",길이,Kv,StepSize,MA_Mode,Advance,Percentage,UpDownShift,HighLow,ColorMode,5,StepMaBarToTest+1);

이중 TwentyOneEMA = iMA(NULL,0,EMA1,0,MODE_EMA,PRICE_CLOSE,1);

더블 FiftyFiveEMA = iMA(NULL,0,EMA2,0,MODE_EMA,PRICE_CLOSE,1);

if(TwentyOneEMA > FiftyFiveEMA)

{

if (trendCurr>0)

{

for(int i=1; i<=Bars-lookback; i++)

{

if (trendCurr<0)

리턴(롱);

그렇지 않으면 반환(NONE);

}

}

}

if(TwentyOneEMA < FiftyFiveEMA)

{

if (trendCurr<0)

{

for(int i2=1; i2<=바-룩백; i2++)

{

if (trendCurr>0)

반환(짧은);

그렇지 않으면 반환(없음);

}

}

}

반환(없음);

}

어떤 아이디어든 감사합니다.
사유: