[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 461 1...454455456457458459460461462463464465466467468...652 새 코멘트 asasusa 2011.12.28 06:26 #4601 내 경우에 모든 조건이 충족될 때 OrderSended 변수가 false 값을 취하지 않는 이유를 알려주십시오. int start() { //---- int i; int i2; double MACD; double MACD2 = iCustom ( Symbol (), 0 , "MACD" , 5 , 21 , 1 , 0 , 0 ); double MACD3 = iCustom ( Symbol (), 0 , "MACD" , 5 , 21 , 1 , 0 , 1 ); double MyNull = 0.0 ; int bar1; int bar2; static bool OrderSended = false; if (MACD2 > 0 && MACD3 > 0 || MACD2 < 0 && MACD3 < 0 ) // Вот эти условия { OrderSended = false; } Print ( "MACD2 = " ,MACD2, "MACD3 = " ,MACD3, "OrderSended = " ,OrderSended); if (MACD2 < 0 && MACD3 > 0 && OrderSended == false) { if ( OrderSend ( Symbol (),OP_SELL,Lot,Ask,Slippage,Ask + StopLoss * Point , 0 ,OrdersComment,MagicNumber, 0 , Red ) > 0 ) { OrderSended = true; } } //---- return ( 0 ); } 이것은 MACD2 및 MACD3이 0보다 크며 두 변수가 모두 0보다 크면 거짓이 되어야 하지만 로그에 기록됩니다. 그리고 OrderSended는 여전히 참입니다. ilunga 2011.12.28 06:38 #4602 sss2019 : 내 경우에 모든 조건이 충족될 때 OrderSended 변수가 false 값을 취하지 않는 이유를 알려주십시오. 이것은 MACD2 및 MACD3이 0보다 크며 두 변수가 모두 0보다 크면 거짓이 되어야 하지만 로그에 기록됩니다. 그리고 OrderSended는 여전히 참입니다. if (MACD2 < 0 && MACD3 > 0 코드에서 1은 0보다 크고 두 번째는 더 작습니다. asasusa 2011.12.28 06:41 #4603 ilunga : 코드에서 1은 0보다 크고 두 번째는 더 작습니다. 따라서 이것은 포지션을 여는 신호일 뿐입니다. 여기에서는 조건이 0보다 큽니다. if (MACD2 > 0 && MACD3 > 0 || MACD2 < 0 && MACD3 < 0 ) // Вот эти условия { OrderSended = false; } ilunga 2011.12.28 07:01 #4604 sss2019 : 따라서 이것은 위치를 여는 신호일 뿐입니다. 여기에서 조건은 0보다 큽니다. 그러나 여기에서는 조건의 99%가 원하는 순서로 잘못된 순서로 계산되기 때문에 여기에 대괄호를 넣는 것이 좋습니다. if ((MACD2 > 0 && MACD3 > 0 ) || (MACD2 < 0 && MACD3 < 0 )) // Вот эти условия asasusa 2011.12.28 07:19 #4605 이 디자인이 작동하는지 알려주십시오. if ( OrdersTotal (MagicNumber)) 즉, 특정 매직넘버를 가진 주문이 있다면... ilunga 2011.12.28 07:30 #4606 sss2019 : 이 디자인이 작동하는지 알려주십시오. 즉, 특정 매직넘버를 가진 주문이 있다면... 함수를 직접 작성하는 경우에만 int OrdersTotal(int magic) asasusa 2011.12.28 08:16 #4607 그러나 예를 들어, 이 함수가 사용된 하나의 값을 반환합니까 아니면 모든 값을 반환합니까? 예를 들어, 루프에서 두 개의 변수에 값이 할당된 경우 루프는 두 변수의 값을 반환합니까, 아니면 마지막 변수만 반환합니까? DOCTORGAD 2011.12.28 08:56 #4608 그래서 저는 저만의 방식으로 프랙탈을 다루었습니다. 저는 저만의 방식으로 지표를 작성했습니다 . 음, 저에게는 더 쉽습니다. 문제는 문제가 있습니다. 화살표를 뒤로 3칸 이동하는 방법은 무엇입니까? :( 코드 조각... SetIndexStyle(0, DRAW_ARROW,0,1); SetIndexArrow(0,217); SetIndexBuffer(0, ExtMapBuffer1); SetIndexEmptyValue(0, 0.0); SetIndexStyle(1, DRAW_ARROW,0,1); SetIndexArrow(1, 218); SetIndexBuffer(1, ExtMapBuffer2); SetIndexEmptyValue(1, 0.0); IndicatorShortName("My_iFractals"); SetIndexLabel(0, "iFractalsUp"); SetIndexLabel(1, "iFractalsDn"); UPD Вопрос снят, сорри опять за кривость свою, но может кому будет интересно ответ - SetIndexShift(0,-3); [ARCHIVE] Any rookie question, Can any one help Any questions from newcomers ilunga 2011.12.28 09:02 #4609 sss2019 : 그러나 예를 들어, 이 함수가 사용된 하나의 값을 반환합니까 아니면 모든 값을 반환합니까? 예를 들어 루프에서 두 개의 변수에 값이 할당된 경우 루프는 두 변수의 값을 모두 반환합니까 아니면 마지막 변수만 반환합니까? 아 그리고 죽.. 1) for는 함수가 아니라 루프문입니다. 2) 함수는 return과 함께 반환하도록 지시된 것만 반환합니다. 3) 주기가 있는 변수는 느슨하게 결합됩니다. 한 주기에 최소 10개를 변경할 수 있습니다. [삭제] 2011.12.28 09:28 #4610 여러분, 문제가 무엇인지 이해할 수 없습니다. 마감 주문이 있는 이 상황은 명확하지 않습니다. 이와 같이 모든 것이 잘 작동할 때: double PriceBid = Bid; double PriceAsk = Ask; PrevPriceBid = PriceBid; PrevPriceAsk = PriceAsk; double be = GetWeightedBELevel(); if (be != - 1 ) { double BuyLots = GetBuyLotsSum(); double SellLots = GetSellLotsSum(); double Swap = GetSwap(); //string str = be + " "; if (Swap < 0 ) { double diff = BuyLots - SellLots; //str = str + MarketInfo(Symbol(), MODE_TICKVALUE) * diff + " " + (-Swap / (MarketInfo(Symbol(), MODE_TICKVALUE) * diff) * Point) + " "; be += ND(-Swap / ( MarketInfo ( Symbol (), MODE_TICKVALUE) * diff) * Point + diff / MathAbs (diff) * 1 * Point ); } //str = str + Swap + " " + be; //Comment(str); if ((BuyLots > SellLots && ND(PrevPriceBid) < ND(be + (TakeProfitBuy) * Point ) && ND(PriceBid) >= ND(be + (TakeProfitBuy) * Point )) || (BuyLots < SellLots && ND(PrevPriceAsk) > ND(be - (TakeProfitSell) * Point ) && ND(PriceAsk) <= ND(be - (TakeProfitSell) * Point ))) { CloseAllBuy(); CloseAllSell(); } } ObjectDelete ( "ZeroBuy" ); if (BuyLots > SellLots) { double ZeroBuy = ND(be + TakeProfitBuy * Point ); ObjectCreate ( "ZeroBuy" , OBJ_ARROW , 0 ,Time[ 0 ],ZeroBuy, 0 , 0 , 0 , 0 ); ObjectSet ( "ZeroBuy" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "ZeroBuy" , OBJPROP_COLOR , Olive );} ObjectDelete ( "ZeroSell" ); if (BuyLots < SellLots) { double ZeroSell = ND(be - TakeProfitSell * Point ); ObjectCreate ( "ZeroSell" , OBJ_ARROW , 0 ,Time[ 0 ],ZeroSell, 0 , 0 , 0 , 0 ); ObjectSet ( "ZeroSell" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "ZeroSell" , OBJPROP_COLOR , Olive );} //--------------------- 맨 위 코드 아래에 이 코드를 추가합니다. //+X================================================================X+X+ int b,s; double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs,SLbTwo,SLsTwo; // for ( int i= 0 ; i< OrdersTotal (); i++) { if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true) { if ( OrderSymbol ()== Symbol ()) { price = OrderOpenPrice (); lot = OrderLots (); if ( OrderType ()==OP_BUY ) {price_b = price_b+price*lot; b++; lot_b=lot_b+lot;} if ( OrderType ()==OP_SELL) {price_s = price_s+price*lot; s++; lot_s=lot_s+lot;} } } } ObjectDelete ( "SLb" ); if (b!= 0 ) { SLb = (price_b/lot_b)+TakeProfitBuy * Point ; ObjectCreate ( "SLb" , OBJ_ARROW , 0 ,Time[ 0 ],SLb, 0 , 0 , 0 , 0 ); ObjectSet ( "SLb" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "SLb" , OBJPROP_COLOR , Navy ); } ObjectDelete ( "SLbTwo" ); if (b!= 0 ) { SLbTwo = (price_b/lot_b)+TakeProfitBuyTwo * Point ; ObjectCreate ( "SLbTwo" , OBJ_ARROW , 0 ,Time[ 0 ],SLbTwo, 0 , 0 , 0 , 0 ); ObjectSet ( "SLbTwo" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "SLbTwo" , OBJPROP_COLOR , Navy ); } ObjectDelete ( "SLs" ); if (s!= 0 ) { SLs = (price_s/lot_s)-TakeProfitSell * Point ; ObjectCreate ( "SLs" , OBJ_ARROW , 0 ,Time[ 0 ],SLs, 0 , 0 , 0 , 0 ); ObjectSet ( "SLs" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "SLs" , OBJPROP_COLOR , Maroon ); } ObjectDelete ( "SLsTwo" ); if (s!= 0 ) { SLsTwo = (price_s/lot_s)-TakeProfitSellTwo * Point ; ObjectCreate ( "SLsTwo" , OBJ_ARROW , 0 ,Time[ 0 ],SLsTwo, 0 , 0 , 0 , 0 ); ObjectSet ( "SLsTwo" , OBJPROP_ARROWCODE , 6 ); ObjectSet ( "SLsTwo" , OBJPROP_COLOR , Maroon ); } if ((totalBuy > 1 ) && (SLb > Ask) && (SLbTwo < Ask) && (DnM15 > Bid)) // { CloseAllBuy(); } if ((totalSell > 1 ) && (SLs < Bid) && (SLsTwo > Bid) && (UpM15 < Ask)) // { CloseAllSell(); } //--------------------------------- 첫 번째 기능이 더 이상 작동하지 않고 주문을 마감하지 않은 후. 로그에 오류가 표시되지 않습니다. 왜 그래, 내가 어디에서 실수를 했습니까? 두 기능 모두 아래로 모든 개체를 이동하고 작동했습니다. 질문이 제거되었습니다! 1...454455456457458459460461462463464465466467468...652 새 코멘트 사유: 취소 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
내 경우에 모든 조건이 충족될 때 OrderSended 변수가 false 값을 취하지 않는 이유를 알려주십시오.
이것은 MACD2 및 MACD3이 0보다 크며 두 변수가 모두 0보다 크면 거짓이 되어야 하지만 로그에 기록됩니다. 그리고 OrderSended는 여전히 참입니다.
내 경우에 모든 조건이 충족될 때 OrderSended 변수가 false 값을 취하지 않는 이유를 알려주십시오.
이것은 MACD2 및 MACD3이 0보다 크며 두 변수가 모두 0보다 크면 거짓이 되어야 하지만 로그에 기록됩니다. 그리고 OrderSended는 여전히 참입니다.
코드에서 1은 0보다 크고 두 번째는 더 작습니다.
코드에서 1은 0보다 크고 두 번째는 더 작습니다.
따라서 이것은 포지션을 여는 신호일 뿐입니다. 여기에서는 조건이 0보다 큽니다.
따라서 이것은 위치를 여는 신호일 뿐입니다. 여기에서 조건은 0보다 큽니다.
그러나 여기에서는 조건의 99%가 원하는 순서로 잘못된 순서로 계산되기 때문에 여기에 대괄호를 넣는 것이 좋습니다.
이 디자인이 작동하는지 알려주십시오.
즉, 특정 매직넘버를 가진 주문이 있다면...
이 디자인이 작동하는지 알려주십시오.
즉, 특정 매직넘버를 가진 주문이 있다면...
int OrdersTotal(int magic)
그래서 저는 저만의 방식으로 프랙탈을 다루었습니다. 저는 저만의 방식으로 지표를 작성했습니다 . 음, 저에게는 더 쉽습니다. 문제는 문제가 있습니다.
화살표를 뒤로 3칸 이동하는 방법은 무엇입니까? :(
코드 조각...
SetIndexStyle(0, DRAW_ARROW,0,1);
SetIndexArrow(0,217);
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1, DRAW_ARROW,0,1);
SetIndexArrow(1, 218);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexEmptyValue(1, 0.0);
IndicatorShortName("My_iFractals");
SetIndexLabel(0, "iFractalsUp");
SetIndexLabel(1, "iFractalsDn");
UPD
Вопрос снят, сорри опять за кривость свою, но может кому будет интересно ответ - SetIndexShift(0,-3);
그러나 예를 들어, 이 함수가 사용된 하나의 값을 반환합니까 아니면 모든 값을 반환합니까? 예를 들어 루프에서 두 개의 변수에 값이 할당된 경우 루프는 두 변수의 값을 모두 반환합니까 아니면 마지막 변수만 반환합니까?
아 그리고 죽..
1) for는 함수가 아니라 루프문입니다.
2) 함수는 return과 함께 반환하도록 지시된 것만 반환합니다.
3) 주기가 있는 변수는 느슨하게 결합됩니다. 한 주기에 최소 10개를 변경할 수 있습니다.
여러분, 문제가 무엇인지 이해할 수 없습니다. 마감 주문이 있는 이 상황은 명확하지 않습니다.
이와 같이 모든 것이 잘 작동할 때:
맨 위 코드 아래에 이 코드를 추가합니다.
첫 번째 기능이 더 이상 작동하지 않고 주문을 마감하지 않은 후. 로그에 오류가 표시되지 않습니다. 왜 그래, 내가 어디에서 실수를 했습니까?
두 기능 모두 아래로 모든 개체를 이동하고 작동했습니다. 질문이 제거되었습니다!