MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 475 1...468469470471472473474475476477478479480481482...1953 새 코멘트 Rewerpool 2018.02.21 16:34 #4741 @Artyom Trishkin @Konstantin Nikitin 알려주십시오. int start를 통해 void NOTIFICATION() 함수를 폴링하는 것이 맞습니까? 일정한 주기가 있습니다! 이 논리를 바로 시작하는 것이 더 논리적일까요? 쓰레기를 버리지 않고 적재하지 않기 위해! 그리고 제가 직접 읽어보면 더 재미있을 것 같아서 글을 썼어요! Artyom Trishkin 2018.02.21 16:40 #4742 Rewerpool : @Artyom Trishkin @Konstantin Nikitin 알려주십시오. int start를 통해 void NOTIFICATION() 함수를 폴링하는 것이 맞습니까? 일정한 주기가 있습니다! 이 논리를 바로 시작하는 것이 더 논리적일까요? OnTick()을 사용합니다. 그것은 모두 필요한 논리에 달려 있습니다. Vladimir Ozharovskiy 2018.02.21 16:50 #4743 이거 어디에 넣어야 하는지 알려주실 수 있나요? //+----------------------------------------------- --------------------+ //| Проверяет объем ордера на корректность | //+------------------------------------------------------------------+ bool CheckVolumeValue( double volume, string & description ) { //--- минимально допустимый объем для торговых операций double min_volume= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MIN ); if (volume<min_volume) { description = StringFormat ( "Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f" ,min_volume); return ( false ); } //--- максимально допустимый объем для торговых операций double max_volume= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_MAX ); if (volume>max_volume) { description = StringFormat ( "Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f" ,max_volume); return ( false ); } //--- получим минимальную градацию объема double volume_step= SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP ); int ratio=( int ) MathRound (volume/volume_step); if ( MathAbs (ratio*volume_step-volume)> 0.0000001 ) { description = StringFormat ( "Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f" , volume_step,ratio*volume_step); return ( false ); } description = "Корректное значение объема" ; return ( true ); } Vladimir Ozharovskiy 2018.02.21 17:08 #4744 고문 코드 열거형 { e=1, // 포물선 표시기 기준 }; 열거형 tf { af=0, // 현재 bf=1, // 1분 cf=2, // 5분 df=3, // 15분 ef=4, // 30분 ff=5, // 1시간 gf=6, // 4시간 hf=7, // 1일 }; extern int 매직 = 123654789; extern int 미끄러짐 = 0; 입력 더블 로트 = 1; 외부 int rsi_period = 14; 외부 int rsi_high = 50; 정수 rsi_price = PRICE_CLOSE; 외부 int rsi_low = 50; int loss_stop = 5000; extern int take_profit = 5000; 이중 sar_step = 0.03; 이중 sar_max = 0.03; int GeneralNoLoss = 거짓; // 손익분기점에서 추적 정수 매개변수_후행 = e; // 트롤 메소드 int StartTrall = -5000; // 최소 후행 이익(포인트) int 스텝트럴 = 1; // 정지 손실 이동 단계 입력 tf TF_Tralling = af; // 표시기 타임프레임(0-현재) 외부 정수 델타 = 50; // 계산된 손절매 수준에서 오프셋 이중 단계 = 0.03; //포물선 단계(방법 4) 이중 최대값 = 0.03; //포물선 최대값(방법 4) 색상 text_color = 라임; // 정보 출력 색상 이중 ma, rsi, sar_1, sar_2, ma_1, ma_2, ma_3, ma_4, ma_5, ma_6; 날짜 시간 LastBuyTime, LastSellTime; 정수 STOPLEVEL; 정수 TF[10]={0,1,5,15,30,60,240,1440,10080,43200}; 이중 SLB=0,SLS=0; int OnInit() { //--- //--- 리턴(0); } 무효 OnTick(){ STOPLEVEL=(int)MarketInfo(Symbol(),MODE_STOPLEVEL); 정수 b=0,s=0; 이중 OOP, price_b=0, price_s=0, lot=0,NLb=0,NLs=0,LS=0,LB=0; int 팁, 티켓; 부울 오류; 더블 SL, OSL; 정수 = 0; (b==0) SLB=0인 경우; (s==0) SLS=0인 경우; for (int i=OrdersTotal(); i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS)==true) { 팁 = 주문 유형(); if (tip<2 && (OrderSymbol()==Symbol()) && (OrderMagicNumber()==Magic)) { OSL = OrderStopLoss(); OOP = OrderOpenPrice(); 티켓 = OrderTicket(); 엔++; if (팁==OP_BUY) { if(일반 손실 없음) { SL = SlLastBar(OP_BUY, 입찰가, NLb); if (SL < NLb+StartTall*Point) 계속; } 또 다른 { SL = SlLastBar(OP_BUY, 입찰가, OOP); if (SL < OOP+StartTall*Point) 계속; } //if (OSL >= OOP && only_NoLoss) 계속; if (SL >= OSL + StepTall*Point && (Bid-SL)/Point>STOPLEVEL) { error=OrderModify(티켓,OOP,SL,OrderTakeProfit(),0,흰색); if (!error) Comment("TrailingStop Error ",GetLastError()," order ",Ticket," SL ",SL); else Comment("TrailingStop ",티켓," ",TimeToStr(TimeCurrent(),TIME_MINUTES)); } } if (팁==OP_SELL) { if(일반 손실 없음) { SL = SlLastBar(OP_SELL,문의,NL); if (SL > NLs-StartTall*Point) 계속; } 또 다른 { SL = SlLastBar(OP_SELL, 물어보기, OOP); if (SL > OOP-StartTall*Point) 계속; } //if (OSL <= OOP && only_NoLoss) 계속; if ((SL <= OSL-StepTall*Point || OSL==0) && (SL-Ask)/Point>STOPLEVEL) { error=OrderModify(티켓,OOP,SL,OrderTakeProfit(),0,흰색); if (!error) Comment("TrailingStop Error ",GetLastError()," order ",Ticket," SL ",SL); else Comment("TrailingStop ",티켓," ",TimeToStr(TimeCurrent(),TIME_MINUTES)); } } } } } ma = iMA(기호(), 0, 70, 0, MODE_SMA, PRICE_CLOSE, 1); rsi = iRSI(Symbol(), 0, rsi_period, rsi_price, 1); sar_1 = iSAR(기호(), 0, sar_step, sar_max, 1); sar_2 = iSAR(기호(), 0, sar_step, sar_max, 2); 만약 ((hhhhhhhhhh)) { LastBuyTime = 시간[0]; if(OrderSend(Symbol(), OP_BUY, lot, NormalizeDouble(Ask,Digits), Slippage, Ask - loss_stop*Point, Ask + take_profit*Point, "주문", Magic, 0, clrGreen) > 0){ Print("구매 주문이 전송되었습니다!"); 반품; }else Print("구매 주문 오류"); } 만약 ((hhhhhhhhhhhhhhhh)) { LastSellTime = 시간[0]; if(OrderSend(Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), Slippage, Bid + loss_stop*Point, Bid - take_profit*Point, "Order", Magic, 0, clrRed) > 0) { Print("판매 주문이 발송되었습니다!"); 반품; }else Print("판매 주문 오류"); } } //------------------------------------------------ -------------------- 이중 SlLastBar(int 팁, 이중 가격, 이중 OOP) { 이중 값 = 0; 스위치(parameters_trailing) { 사례 1: // Parabolic 표시자에 의해 prc = iSAR(Symbol(),TF[TF_Tralling],Step,Maximum,0); if (팁==OP_BUY) { prc = NormalizeDouble(prc - 델타*포인트, 숫자); if(가격-STOPLEVEL*포인트 < prc) prc=0; ARROW("cm_SL_Buy", prc, 4, clrAqua); } if (팁==OP_SELL) { prc = NormalizeDouble(prc + delta*Point,Digits); if(price+STOPLEVEL*Point > prc) prc=0; ARROW("cm_SL_Sell", prc, 4, clrRed); } 부서지다; } 반환(prc); } //------------------------------------------------ -------------------- 문자열 StrPer(int 당) { if (per == 0) per=Period(); if (== 1 당) return("M1"); if (== 5당) return("M5"); if (per == 15) return("M15"); if (당 == 30) return("M30"); if (per == 60) return("H1"); if (per == 240) return("H4"); if (== 1440당) return("D1"); if (== 10080 당) return("W1"); if (per == 43200) return("MN1"); return("마침표 오류"); } //+----------------------------------------------- --------------------+ void ARROW(문자열 이름, 이중 가격, int ARROWCODE, 색상 c) { 개체삭제(이름); ObjectCreate(이름, OBJ_ARROW ,0,시간[0],가격,0,0,0,0); ObjectSetInteger(0,이름,OBJPROP_ARROWCODE,ARROWCODE); ObjectSetInteger(0,이름,OBJPROP_SELECTABLE,거짓); ObjectSetInteger(0,이름,OBJPROP_SELECTED,거짓); ObjectSetInteger(0, 이름, OBJPROP_COLOR, c); ObjectSetInteger(0,이름,OBJPROP_WIDTH, 1); } //------------------------------------------------ -------------------- 색상 색상(bool P,색상 a,색상 b) { if (P) return(a); 반환(b); } //------------------------------------------------ -------------------- Any questions from newcomers 고문 개선 전략 [아카이브!] 포럼을 어지럽히 지 Alekseu Fedotov 2018.02.21 17:09 #4745 Vladimir Ozharovskiy : 이거 어디에 넣어야 하는지 알려주실 수 있나요? //+----------------------------------------------- --------------------+ 글쎄요....그렇게 중요하다면 이 작업을 수행: //+------------------------------------------------------------------+ //| Проверяет объем ордера на корректность | //+------------------------------------------------------------------+ 멋진..))) Vladimir Ozharovskiy 2018.02.21 17:12 #4746 Alekseu Fedotov : 글쎄요....그렇게 중요하다면 이 작업을 수행: 멋진..))) 근데 진지하게?) Alekseu Fedotov 2018.02.21 17:21 #4747 Vladimir Ozharovskiy : 근데 진지하게?) 기능 자체에 대해 이야기하는 경우 프로그램의 맨 끝에 복사하여 붙여넣으십시오. void OnTick() 함수 외부에 필요 Rewerpool 2018.02.21 17:30 #4748 Vladimir Ozharovskiy : 근데 진지하게?) 내가 알기로는 이 기능은 경매에 참여하지 않고 설명 을 확인하고 보고한다. Rewerpool 2018.02.21 17:32 #4749 Alekseu Fedotov : 기능 자체에 대해 이야기하는 경우 프로그램의 맨 끝에 복사하여 붙여넣으십시오. void OnTick() 함수 외부에 필요 그러면 사람이 할 일은 무엇입니까? 당신은 여전히 그녀를 올바르게 불러야합니다! Vladimir Ozharovskiy 2018.02.21 18:14 #4750 도움이 될 것 같습니다.. 감사합니다! 1...468469470471472473474475476477478479480481482...1953 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
@Artyom Trishkin @Konstantin Nikitin
알려주십시오. int start를 통해 void NOTIFICATION() 함수를 폴링하는 것이 맞습니까? 일정한 주기가 있습니다! 이 논리를 바로 시작하는 것이 더 논리적일까요? 쓰레기를 버리지 않고 적재하지 않기 위해! 그리고 제가 직접 읽어보면 더 재미있을 것 같아서 글을 썼어요!
@Artyom Trishkin @Konstantin Nikitin
알려주십시오. int start를 통해 void NOTIFICATION() 함수를 폴링하는 것이 맞습니까? 일정한 주기가 있습니다! 이 논리를 바로 시작하는 것이 더 논리적일까요?
고문 코드
이거 어디에 넣어야 하는지 알려주실 수 있나요? //+----------------------------------------------- --------------------+
글쎄요....그렇게 중요하다면
이 작업을 수행:
멋진..)))
글쎄요....그렇게 중요하다면
이 작업을 수행:
멋진..)))
근데 진지하게?)
근데 진지하게?)
기능 자체에 대해 이야기하는 경우 프로그램의 맨 끝에 복사하여 붙여넣으십시오.
void OnTick() 함수 외부에 필요
근데 진지하게?)
내가 알기로는 이 기능은 경매에 참여하지 않고 설명 을 확인하고 보고한다.
기능 자체에 대해 이야기하는 경우 프로그램의 맨 끝에 복사하여 붙여넣으십시오.
void OnTick() 함수 외부에 필요
그러면 사람이 할 일은 무엇입니까? 당신은 여전히 그녀를 올바르게 불러야합니다!