코딩 도움말 - 페이지 477

 

안녕하세요 마스터코더입니다.

그림 a와 b에서 플롯 1인 PPO_alt 표시기를 작성하려고 하지만 실시간 모드에서는 올바르게 플롯되지 않습니다.

그래서 원래 PPO(플롯 2)를 수정하려고 하지만 여전히 정확하지 않습니다. 보시고 둘 다 고칠 수 있을까요?

미리 감사드립니다.

추신. 명확하지 않은 경우 추가 질문을 하십시오.

파일:
ppo_mod.rar  80 kb
 
download38:
안녕하세요 마스터코더님

그림 a와 b에서 플롯 1인 PPO_alt 표시기를 작성하려고 하지만 실시간 모드에서는 올바르게 플롯되지 않습니다.

그래서 원래 PPO(플롯 2)를 수정하려고 하지만 여전히 정확하지 않습니다. 보시고 둘 다 고칠 수 있을까요?

미리 감사드립니다.

추신. 명확하지 않은 경우 추가 질문을 하십시오.

왜 두 개의 루프에서 똑같은 일을 하고 있습니까?

 

안녕하세요 믈라덴

도움이 필요하다

실시간 견적이 안 나와요 도와주세요

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

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

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

#속성 표시기_차트_창

이중 ExtMapBuffer1[];

외부 int RSI_periode = 14;

외부 int RSI_level = 50;

외부 색상 BuyColor = clrLime;

외부 색상 SellColor = clrRed;

외부 정수 수평 = 20;

외부 int 수직 = 50;

외부 정수 시프트 = 1;

외부 이중 퍼센트 = 0.25;

extern 문자열 fontmode = "Arial";

외부 정수 글꼴 크기 = 10;

외부 색상 글꼴 색상 = clrSkyBlue;

extern int 열 간격 = 100;

정수 초기화()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

리턴(0);

}

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

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

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

정수 초기화()

{

//----

ObjectsDeleteAll();

ObjectDelete("정보");

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

string symlist2[] = {"NIFTY","B.NIFTY","XAUUSD", "GOLD"};

문자열 기호;

문자열 정보2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

문자열 정보 레이블;

string timeText[] = {"DayHigh","DayLow","Bid","Ask"};

문자열 글꼴 = "터미널";

int counted_bars=IndicatorCounted();

정수 symlimit = ArraySize(symlist2);

int 시간 제한 = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

기호 = symlist2;

Display("symlabel" + 기호 + i, 가로, 세로);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + 기호 + i, 수평, 수직 +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

정보라벨 = 정보2[j];

Display("정보 레이블" + j, 수평+((j+1)*100), 수직);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, 핑크);

Display("infolabel2" + 기호 + ((j+1)*열 간격), 가로+((j+1)*100), 세로 +((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel, fontsize, font, fontcolor);

}

}

//----

반환(0);

}

무효 표시(문자열 이름, int x, int y)

{

ObjectCreate(이름, OBJ_LABEL , 0, 0, 0);

ObjectSet(이름, OBJPROP_CORNER, 0);

ObjectSet(이름, OBJPROP_XDISTANCE, x);

ObjectSet(이름, OBJPROP_YDISTANCE, y);

ObjectSet(이름, OBJPROP_BACK, FALSE);

}

 
nbtrading:
왜 두 개의 루프에서 똑같은 일을 하고 있습니까?

아, 저는 보기 쉽도록 점으로 선을 그리고 싶습니다.

중요한 라인은 내가 문제가 있는 멀티하이입니다.

질문 주셔서 감사합니다.

 

"Close BUY" 및 "Close SELL" 알고리즘

안녕하세요 프로코더 여러분,

누군가 "Close BUY" 및 "Close SELL" 알고리즘을 검토할 수 있는지 궁금합니다.

EA는 손절매 또는 추세 변화가 발생한 후 새로운 위치를 열지 않습니다.

시스템은 위치를 닫고 있으며 새로운 추세 변화에 따라 다음 위치가 열리므로 기회를 잃게 됩니다.

(스크린샷을 참조하십시오).

void CheckForClose()

{

새로 고침 비율();

double cl_diCustom0 = iCustom(s_symbol,TenkanKijunTf,"Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,0,bar);

double cl_diCustom1 = iCustom(s_symbol,TenkanKijunTf,"Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom2 = iCustom(s_symbol,TenkanKijunTf,"Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar);

double cl_diCustom3 = iCustom(s_symbol,TenkanKijunTf,"Tenkan Sen-Kijun Sen",0,Tenkan,Kijun,1,bar+1);

이중 cl_diMA3 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar);

이중 cl_diMA4 = iMA(s_symbol,MaTimeframe,MaPeriod,0,MaType,PRICE_CLOSE,bar+1);

for(int i=0;i<OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;

if(OrderMagicNumber()!= MAGIC) 계속;

if(OrderSymbol() != s_symbol) 계속;

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

//| 닫기 구매 |

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

if(cl_diCustom0!=cl_diCustom1) // 추세 확인

{

if(주문유형()==OP_BUY)

{

if(cl_diCustom0<cl_diCustom1 && cl_diCustom2=cl_diMA4)

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(구매 닫기==거짓)

{

정수 오류 코드 = GetLastError();

문자열 ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("구매 주문 마감 - 오류 ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("입찰가: ",MarketInfo(s_symbol,MODE_BID)," 부지: ",OrderLots()," 티켓: ",OrderTicket());

인쇄(에러로그);

}

부서지다;

} // 모드

}

}

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

//| 닫기 판매 |

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

if(cl_diCustom0!=cl_diCustom1)

{

if(주문 유형()==OP_SELL)

{

if(cl_diCustom0>cl_diCustom1 && cl_diCustom2>cl_diMA3 && cl_diCustom3<=cl_diMA4)

{

bool SellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(판매 종료 == 거짓)

{

오류 코드 = GetLastError();

ErrDesc = 오류 설명(오류 코드);

ErrAlert=StringConcatenate("판매 주문 마감 - 오류 ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) 경고(ErrAlert);

ErrLog=StringConcatenate("문의: ",MarketInfo(s_symbol,MODE_ASK)," 부지: ",OrderLots()," 티켓: ",OrderTicket());

인쇄(에러로그);

}

부서지다;

} // 모드

}

}

}

}

파일:
 
tfi_markets:
안녕하세요 프로코더 여러분,

누군가 "Close BUY" 및 "Close SELL" 알고리즘을 검토할 수 있는지 궁금합니다.

EA는 손절매 또는 추세 변화가 발생한 후 새로운 위치를 열지 않습니다.

시스템은 포지션을 닫고 있을 뿐이고, 새로운 트렌드 변화에 따라 다음 포지션이 열리며, 이는 기회 상실로 이어집니다.

(스크린샷을 참조하십시오).

이것을 변경하십시오:

for(int i=0;i<OrdersTotal(); i++)

이에

for(int i=OrdersTotal()-1;i>=0 ; i--)

 
mladen:
무슨 일이 있었는지 알려주십시오. 아마도 특정 메타 트레이더 빌드의 문제일 수 있습니다(현재 빌드 788 사용).

광산 빌드 765

Pruchik은 여기에서 이 버전을 제공했습니다.

https://www.mql5.com/en/forum/173588

그러나 차트에 선을 남기고 변경되는 경우 Gann sq9 표시기의 선을 제거하려면 추가 스크립트가 필요합니다.

 

이 디스플레이 정보 문제에 대한 도움이 필요합니다......

vegadigitalco:
안녕하세요 믈라덴&올시니어 코더

이 디스플레이 정보 문제에 대한 도움이 필요합니다......

실시간 견적이 안 나와요 도와주세요

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

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

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

#속성 표시기_차트_창

이중 ExtMapBuffer1[];

외부 int RSI_periode = 14;

외부 int RSI_level = 50;

외부 색상 BuyColor = clrLime;

외부 색상 SellColor = clrRed;

외부 정수 수평 = 20;

외부 int 수직 = 50;

외부 정수 시프트 = 1;

외부 이중 퍼센트 = 0.25;

extern 문자열 fontmode = "Arial";

외부 정수 글꼴 크기 = 10;

외부 색상 글꼴 색상 = clrSkyBlue;

extern int 열 간격 = 100;

정수 초기화()

{

//----

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

//----

리턴(0);

}

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

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

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

정수 초기화()

{

//----

ObjectsDeleteAll();

ObjectDelete("정보");

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

string symlist2[] = {"NIFTY","B.NIFTY","XAUUSD", "GOLD"};

문자열 기호;

문자열 정보2[] = {MODE_HIGH,MODE_LOW,MODE_BID,MODE_ASK};

문자열 정보 레이블;

string timeText[] = {"DayHigh","DayLow","Bid","Ask"};

문자열 글꼴 = "터미널";

int counted_bars=IndicatorCounted();

정수 symlimit = ArraySize(symlist2);

int 시간 제한 = ArraySize(info2);

for(int i=0;i<symlimit;i++)

{

기호 = symlist2;

Display("symlabel" + 기호 + i, 가로, 세로);

ObjectSetText("symlabel" + symbol + i, "SYMBOL", fontsize, font, Pink);

Display("sym" + 기호 + i, 수평, 수직 +((i+1)*18));

ObjectSetText("sym" + symbol + i, "" + symbol + "", fontsize, font, Yellow);

for(int j=0;j<timelimit;j++)

{

정보라벨 = 정보2[j];

Display("정보 레이블" + j, 수평+((j+1)*100), 수직);

ObjectSetText("infolabel" + j, timeText[j], fontsize, font, 핑크);

Display("infolabel2" + 기호 + ((j+1)*열 간격), 가로+((j+1)*100), 세로 +((i+1)*18));

ObjectSetText("infolabel2" +symbol+ ((j+1)*columnspacing), infolabel, fontsize, font, fontcolor);

}

}

//----

리턴(0);

}

무효 표시(문자열 이름, int x, int y)

{

ObjectCreate(이름, OBJ_LABEL, 0, 0, 0);

ObjectSet(이름, OBJPROP_CORNER, 0);

ObjectSet(이름, OBJPROP_XDISTANCE, x);

ObjectSet(이름, OBJPROP_YDISTANCE, y);

ObjectSet(이름, OBJPROP_BACK, FALSE);

}
 

안녕하세요 여러분, 저는 작은 요청이 있습니다. 저는 `텍스트 파일에서 읽고 값을 문자열 배열로 반환하는 함수 를 작성하려고 했습니다. 텍스트 파일은 여러 줄로 구성되어 있습니다. 쌍의 총 수인 첫 번째 줄

예:

7

CADJPY

CHFJPY

EURJPY

GBPJPY

NZDJPY

USDJPY

오제피

metaquotes 웹 사이트에서 다음 코드를 찾았지만 멈췄습니다. 문자열 배열을 만들고 텍스트의 첫 번째 줄을 읽은 후 이 값으로 크기를 조정한 다음 쌍 이름으로 채우십시오... 하나는 좀 도와주세요!?

int handle, NL,i,pos[];

string str,word;

handle=FileOpen("test.txt",FILE_READ);//try to open file

if(handle==-1)return(0);// if not exist

if(FileSize(handle)==0){FileClose(handle); return(0); } //if empty

while(!FileIsEnding(handle))//read file to the end by paragraph. if you have only one string, omit it

{

str=FileReadString(handle);//read one paragraph to the string variable

if(str!="")//if string not empty

{

NL=0;

for(i=0;i<StringLen(str);i++)

{

if(StringGetChar(str,i)==10)// look for newline (Charcode:10) only

{

NL++;//yes, we found one more newline

ArrayResize(pos,NL);//increase array

pos[NL-1]=i;//write the number of newline position to array

}

}//now we have array with numbers of positions of all newline

for(i=0;i<=NL;i++)//start to read elements of string

{

if(i==0) word=StringSubstr(str,0,pos[0]);//the first element of string (in this case is the number 7)

else word=StringSubstr(str,pos+1,pos-pos-1);

}

}

}

FileClose(handle); //close file

return(0);

 
download38:
안녕하세요 마스터코더입니다.

그림 a와 b에서 플롯 1인 PPO_alt 표시기를 작성하려고 하지만 실시간 모드에서는 올바르게 플롯되지 않습니다.

그래서 원래 PPO(플롯 2)를 수정하려고 하지만 여전히 정확하지 않습니다. 보시고 둘 다 고칠 수 있을까요?

미리 감사드립니다.

추신. 명확하지 않은 경우 추가 질문을 하십시오.

누구든지 for(i=0; i=0; i--)와 우리가 사용할 때의 차이점을 설명할 수 있습니까?

미리 감사드립니다.

사유: