[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 202 1...195196197198199200201202203204205206207208209...652 새 코멘트 Vitaliy Andreischev 2011.09.22 09:38 #2011 Vinin : 또는 고문의 도움을 받아 활성 도구 목록을 만들 수도 있습니다. 접근 방식이 다소 복잡합니다. 해결이 더 쉬울까요 단순히 입력 매개변수에 숫자를 지정하는 것이 가능하지만 사실 거래 과정에서 일부 통화에 대한 거래가 중단되는 상황이 발생할 수 있습니다. 그런 다음 다른 사람의 고문은 매개변수를 다시 계산해야 합니다. Victor Nikolaev 2011.09.22 09:41 #2012 forexnew : 단순히 입력 매개변수에 숫자를 지정하는 것이 가능하지만 사실 거래 과정에서 일부 통화에 대한 거래가 중단되는 상황이 발생할 수 있습니다. 그런 다음 다른 사람의 고문은 매개변수를 다시 계산해야 합니다. 표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다. noobys 2011.09.22 09:43 #2013 Figar0: В самой функции ошибок нет, наверно ошибки возникают при попытке ее использовать, но это вы нам не показываете. Выкладывайте то что не компилится прямо файлом и гадать будет не надо. //+------------------------------------------------------------------+ //| MACD Sample.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ extern double TakeProfit = 50; extern double TrailingStop = 30; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double MacdCurrent, MacdPrevious, SignalCurrent; double SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total; // initial data checks // it is important to make sure that the expert works with a normal // chart and the user did not make any mistakes setting external // variables (Lots, StopLoss, TakeProfit, // TrailingStop) in our case, we check TakeProfit // on a chart of less than 100 bars if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } double Lots() // Расчет используемого лота { double Lots; Lots=AccountFreeMargin()/10000*5; Lots=MathMin(15,MathMax(0.1,Lots)); if(Lots<0.1) Lots=NormalizeDouble(Lots,2); else { if(Lots<1) Lots=NormalizeDouble(Lots,1); else Lots=NormalizeDouble(Lots,0); } return(Lots); } //+------------------------------------------------------------------+ // to simplify the coding and speed up access // data are put into internal variables MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1); total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // check for short position (SELL) possibility if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } // it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } // the end. Vitaliy Andreischev 2011.09.22 09:54 #2014 Vinin : 표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다. 다른 고문 관리에 대해서는 잘 모릅니다. 모든 통화 쌍에 대해 단 하나의 고문이 있으며 패턴은 다음과 같습니다. 2개의 통화 쌍이 있는 경우: 첫 번째에는 - 2, 두 번째에는 - 1이 표시됩니다. 3개의 통화 쌍이 있는 경우: 첫 번째에는 - 3, 두 번째에는 2, 세 번째에는 1이 표시됩니다. 4개의 통화 쌍이 있는 경우: 첫 번째에는 - 4, 두 번째에는 3, 세 번째에는 2, 네 번째에는 1이 표시됩니다. 첫 번째 통화에 대해 계산된 내용이 다른 통화 쌍의 고문에 의해 고려되지 않은 것 같거나 어떻게든 열려 있는 창(통화 쌍)의 수에 따라 달라지나요? MQL4 및 MQL5에 대한 시장은 통제된 동적 시스템입니다. "멋진", "그룹" 움직임의 "디지털" Vitaliy Andreischev 2011.09.22 10:11 #2015 Vinin : 표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다. 고맙습니다. 이미 스스로 알아 냈습니다. 라인을 제거하고 1에서 kp를 계산하면 됩니다. if ( OrderSymbol ()== Symbol ()) break ; [삭제] 2011.09.22 10:34 #2016 skyjet : 먼저 시작 함수 안에 로트 계산 함수가 선언되어 있습니다. 그녀를 꺼내 그러면 선언되지 않은 변수에 약간의 오류가 있을 수 있지만 네, 직접 처리할 것이라고 생각합니다. DDFedor 2011.09.22 11:55 #2017 skyjet : 로트 계산에서 NormalizeDlouble()이란 무엇입니까? 소수점 뒤에 두 자리가 있어야 합니다. 그렇지 않으면 0.009가 많은 위치가 열리지 않습니다. 최소 로트 단계의 배수가 아닙니다. double Lots; Lots= AccountFreeMargin ()/ 10000 * 5 ; Lots= MathMin ( 15 , MathMax ( 0.1 ,Lots)); if (Lots< 0.1 ) Lots= NormalizeDouble (Lots, 2 ); else { if (Lots< 1 ) Lots= NormalizeDouble (Lots, 1 );// !!!!!!!!!!!!!!!!!!!!!!!!!!!!! else Lots= NormalizeDouble (Lots, 0 );// !!!!!!!!!!!!!!!!!!!!!!!!!!!!! } Artem Gulturyan 2011.09.22 12:33 #2018 얘들아! 증가된 로트로 매 40번째 주문을 만드는 방법은 무엇입니까? :: 시장 및 이연 어쩌면 그렇게? int Nom = OrderTicket (); // Номер ордера a= Nom% 40 ; // к-во делить на 40 без остатка if a = 0 lot = 2 ; noobys 2011.09.22 13:48 #2019 Figar0 : 먼저 시작 함수 안에 로트 계산 함수가 선언되어 있습니다. 그녀를 꺼내 그러면 선언되지 않은 변수에 약간의 오류가 있을 수 있지만 네, 직접 처리할 것이라고 생각합니다. 도와 주셔서 감사합니다. noobys 2011.09.22 13:49 #2020 DDFedor : 스카이젯 : 로트 계산에서 NormalizeDlouble()이란 무엇입니까? 소수점 뒤에 두 자리가 있어야 합니다. 그렇지 않으면 0.009가 많은 위치가 열리지 않습니다. 최소 로트 단계의 배수가 아닙니다. 설명해주셔서 감사합니다. 1...195196197198199200201202203204205206207208209...652 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
또는 고문의 도움을 받아 활성 도구 목록을 만들 수도 있습니다. 접근 방식이 다소 복잡합니다. 해결이 더 쉬울까요
단순히 입력 매개변수에 숫자를 지정하는 것이 가능하지만 사실 거래 과정에서 일부 통화에 대한 거래가 중단되는 상황이 발생할 수 있습니다. 그런 다음 다른 사람의 고문은 매개변수를 다시 계산해야 합니다.
표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다.
Figar0:
В самой функции ошибок нет, наверно ошибки возникают при попытке ее использовать, но это вы нам не показываете. Выкладывайте то что не компилится прямо файлом и гадать будет не надо.
표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다.
다른 고문 관리에 대해서는 잘 모릅니다. 모든 통화 쌍에 대해 단 하나의 고문이 있으며 패턴은 다음과 같습니다.
2개의 통화 쌍이 있는 경우: 첫 번째에는 - 2, 두 번째에는 - 1이 표시됩니다.
3개의 통화 쌍이 있는 경우: 첫 번째에는 - 3, 두 번째에는 2, 세 번째에는 1이 표시됩니다.
4개의 통화 쌍이 있는 경우: 첫 번째에는 - 4, 두 번째에는 3, 세 번째에는 2, 네 번째에는 1이 표시됩니다.
첫 번째 통화에 대해 계산된 내용이 다른 통화 쌍의 고문에 의해 고려되지 않은 것 같거나 어떻게든 열려 있는 창(통화 쌍)의 수에 따라 달라지나요?
표시하는 이유. 조언자는 스스로 얻을 수 있습니다. 동시에 그는 다른 고문을 관리할 수 있습니다. 그것은 모두 작업에 달려 있습니다.
먼저 시작 함수 안에 로트 계산 함수가 선언되어 있습니다. 그녀를 꺼내 그러면 선언되지 않은 변수에 약간의 오류가 있을 수 있지만 네, 직접 처리할 것이라고 생각합니다.
로트 계산에서 NormalizeDlouble()이란 무엇입니까?
소수점 뒤에 두 자리가 있어야 합니다. 그렇지 않으면 0.009가 많은 위치가 열리지 않습니다. 최소 로트 단계의 배수가 아닙니다.
얘들아!
증가된 로트로 매 40번째 주문을 만드는 방법은 무엇입니까? :: 시장 및 이연
어쩌면 그렇게?
먼저 시작 함수 안에 로트 계산 함수가 선언되어 있습니다. 그녀를 꺼내 그러면 선언되지 않은 변수에 약간의 오류가 있을 수 있지만 네, 직접 처리할 것이라고 생각합니다.
로트 계산에서 NormalizeDlouble()이란 무엇입니까?
소수점 뒤에 두 자리가 있어야 합니다. 그렇지 않으면 0.009가 많은 위치가 열리지 않습니다. 최소 로트 단계의 배수가 아닙니다.