코딩하는 방법? - 페이지 199 1...192193194195196197198199200201202203204205206...347 새 코멘트 crn 2009.08.14 23:03 #1981 V-Force: 저는 mq4를 처음 사용하고 MACD용 크로스오버가 있을 때 화면에 디스플레이를 만들려고 합니다. 아래는 내 코드이지만 몇 분마다 경고가 계속 나타납니다. 1시간에 한 번만 경고를 표시하도록 코딩하려면 어떻게 해야 합니까? 아니면 막대당 하나의 경고입니까? 정수 시작() { 문자열 MACD1=""; 컬러 콜트9; 이중 MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0); 이중 MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0); 이중 MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1); 이중 MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1); if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=라임그린; } if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND"; colt9=빨간색; } if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NEW UP CROSSING"; colt9=라임그린; } if ((MACDM_S11 MACDS_S10)) { MACD1="뉴 다운 크로싱"; colt9=빨간색; } 문자열 MACD2=""; 컬러 콜트14; 이중 MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0); 이중 MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0); 이중 MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1); 이중 MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1); if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=라임그린; } if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND"; colt14=빨간색; } if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NEW UP CROSSING"; colt14=라임그린; } if ((MACDM_L11 MACDS_L10)) { MACD2="뉴 다운 크로싱"; colt14=빨간색; } if(MACD1=="NEW UP CROSSING"&&MACD2=="상승세") Alert(Symbol()," - ","H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); if(MACD1=="뉴 다운 크로싱"&&MACD2=="하락 추세") Alert(Symbol()," - ","H1:"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); if(MACD2=="NEW UP CROSSING"&&MACD1=="인 UPTREND") Alert(Symbol()," - ","H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); if(MACD2=="뉴 다운 크로싱"&&MACD1=="하락 추세") Alert(Symbol()," - ","H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); 반환(0); } Minute()==1을 사용하십시오. 상태 drhouse7 2009.08.16 09:20 #1982 수정을 위한 트렌드 Alexcud if (MaH11v < MaH1pr1v){H11v = "V"; co11v = 빨간색; u1x5v = 0; d1x5v = 1;} if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = 파란색; u1x5v = 1; d1x5v = 0;} if (MaH11v == MaH1pr1v){H11v = "0"; co11v = 녹색; u1x5v = 0; d1x5v = 0;} 안녕하세요 여러분, 트렌드를 수정하려고합니다 alexcud(첨부) 나는 "0"이 있는 3개 대신 2개의 신호만 위아래로 원합니다... 그래서 계산이 더 정확할 수 있습니다 ... 어떤 아이디어? 파일: trend_alexcud.mq4 22 kb lumanauw 2009.08.16 13:09 #1983 누군가 이 프로그래밍 라인을 이해하는 데 도움을 줄 수 있습니까? 간단한 영어로 그것은 바가 끝난 후 무언가를 시작하는 EA에 관한 것입니다. 코드는 다음과 같습니다. 날짜/시간 이전=0; // 완료된 바당 한 번만 실행 if(timeprev==시간[0]) return(0); timeprev = 시간[0]; MQ4 매뉴얼을 보면 Time[0]은 bar[0]의 오픈 시간 을 추출하기 위한 것입니다. 1970년 1월 1일부터 초로 표시됩니다. 나는 그것이 어떻게 작동하는지 이해하지 못한다. 먼저 "timeprev=0"이 있습니다. 그런 다음 다음 줄 "if (timeprev==Time[0]) return(0). 이때 Time[0]의 값은 얼마입니까? 어떻게 그것이 0("timeprev"의 값)이 될 수 있습니까? 다음 줄은 "timeprev=Time[0]"입니다. 왜 전체 라인이 막대가 끝날 때까지 EA가 아무 것도 하지 않게 만드는 이유는 무엇입니까? 지뢰밭에서의 시장예절 또는 예의범절 종료 문제, 도와주세요 시장 현상 Jason 2009.08.16 17:24 #1984 crn: Minute()==1을 사용하십시오. 상태 이것은 여전히 각 막대의 첫 번째 분에 각 틱을 설정합니다. 그러면 숫자가 크게 줄어들 수 있지만 여전히 여러 번 경고합니다. 가장 좋은 방법은 전역 변수(또는 객체)를 설정하고 마지막 막대의 Time[]으로 설정하는 것입니다. if (Time[0]!=lastTime) { ... alert, whatever... lastTime=Time[0]; } Jason 2009.08.16 17:28 #1985 Jorged23: 안녕, 나는 OrderModify 오류 1을 피할 수 없다: 수정하기 전에 데이터가 다르다는 것을 제어하려고 해도 항상 나타난다! 나는 이중 정규화도 시도했습니다 ... 작동하지 않습니다 ... 이것은 코드입니다: if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit) { if (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint) { Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,녹색); 어떤 제안? 감사해요. 빠른 확인 ... 손익분기점을 너무 짧게 설정하지 않았는지 확인하십시오. MarketInfo(Symbol(),MODE_STOPLEVEL)에 대해 충분히 큰지 확인하십시오. VPoint의 목적은 무엇입니까? 숫자가 틀리면 문제가 발생합니다. "포인트" 자체는 항상 정확합니다. 해당 번호가 꺼져 있으면 확실히 문제가 발생할 수 있습니다. IE는 실수로 POINT가 실제보다 0 이하입니다. SPACECHIMP 2009.08.17 17:00 #1986 간단한 코딩 질문 주문 선택(5555, SELECT_BY_TICKET); 새로 고침 비율(); if (문의 >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)) { 주문 닫기(5555,1,문의,10,빨간색); } if (입찰가 <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)) { 주문종료(5555,1,입찰가,10,파란색); } 그래도 배우려고 노력중... 가격이 공개 가격 에서 5핍 떨어져 있을 때 기본적으로 포지션의 절반(2랏에서 1로)을 마감하는 데 이것이 효과가 있습니까? 감사해요!!!!!! How to code? QUICK partial closing programming [ARCHIVE!] 포럼을 어지럽히 지 luxinterior 2009.08.17 21:45 #1987 대략적으로 보입니다. 그래도 좀 지저분합니다. 실제로 달성하고자 하는 것에 따라 OrderProfit을 사용할 수도 있습니다. 럭스 추신: 소수점 이하 5자리 중개인을 조심하라는 언급을 잊었습니다. 모든 것에 10을 곱해야 하므로 귀하의 예에서 5는 50이 됩니다. 행운을 빕니다! SPACECHIMP 2009.08.18 02:28 #1988 luxinterior: 대략 맞는 것 같습니다. 조금 지저분합니다. 실제로 달성하고자 하는 것에 따라 OrderProfit을 사용할 수도 있습니다. 럭스 추신: 소수점 이하 5자리 중개인을 조심하라는 언급을 잊었습니다. 모든 것에 10을 곱해야 하므로 귀하의 예에서 5는 50이 됩니다. 행운을 빕니다! 감사합니다 문제는 Windsor 다이렉트를 사용하여 1분 GBP/USD 차트 에서 디버그하기 위해 실행하고 있으며 5핍에 도달할 때 1랏을 닫지 않아 거래가 무엇인지 모릅니다. 또한, 나는 매수를 닫고 즉시 매도를 열려고 하고 있는데 그것도 잘 되지 않습니다. 작동하고 다음은 작동하지 않습니다... 프로그래밍이 훨씬 쉬웠으면 합니다. 만약 (*******************) { 새로 고침 비율(); 주문선택(5555,SELECT_BY_TICKET); if (OrdersTotal() > 0 && OrderType()==OP_BUY) {OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");} 수면(1500); 새로 고침 비율(); if (OrdersTotal() ==0) 티켓 = OrderSend(Symbol(), OP_SELL, lot, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink); if(Ticket<0)Print("오류 #로 인해 OrderSend 실패",GetLastError()); } How to code? QUICK partial closing programming Result of the previous newcoder 2009.08.22 00:02 #1989 디버깅 지표 저는 이 언어가 처음이고 지표를 작성하려고 합니다. 디버거가 없기 때문에 문제가 있습니다. Print()를 사용하려고 했지만 아무 것도 인쇄되지 않습니다. Alert()를 사용하여 버퍼[1]에 대한 출력으로 ZERO를 얻습니다. 누구든지 나에게 이것을 설명 할 수 있습니까? 어떻게 Print() 및 Alert()를 사용하여 모든 0을 얻지 않고 디버깅할 수 있습니까? 누구든지 아이디어가 있으면 알려주십시오. 정말 고마워. tigger.longtail@gmail.com ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i); ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i); 현재 표시줄 = 시간; if( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == 시간 && 플래그 == 0) { Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is above. ",Hour()," Minute ",Minute()); Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is above. ",Hour()," Minute ",Minute()); Print("ExtMapBuffer1 = ", ExtMapBuffer1); Print("ExtMapBuffer2 = ", ExtMapBuffer2); How to code? Programming Question from a 코딩 도움말 drhouse7 2009.08.22 09:11 #1990 어쨌든 안돼 1...192193194195196197198199200201202203204205206...347 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
저는 mq4를 처음 사용하고 MACD용 크로스오버가 있을 때 화면에 디스플레이를 만들려고 합니다. 아래는 내 코드이지만 몇 분마다 경고가 계속 나타납니다.
1시간에 한 번만 경고를 표시하도록 코딩하려면 어떻게 해야 합니까? 아니면 막대당 하나의 경고입니까?
정수 시작()
{
문자열 MACD1="";
컬러 콜트9;
이중 MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0);
이중 MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0);
이중 MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1);
이중 MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1);
if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=라임그린; }
if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND"; colt9=빨간색; }
if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NEW UP CROSSING"; colt9=라임그린; }
if ((MACDM_S11 MACDS_S10)) { MACD1="뉴 다운 크로싱"; colt9=빨간색; }
문자열 MACD2="";
컬러 콜트14;
이중 MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0);
이중 MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0);
이중 MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1);
이중 MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1);
if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=라임그린; }
if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND"; colt14=빨간색; }
if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NEW UP CROSSING"; colt14=라임그린; }
if ((MACDM_L11 MACDS_L10)) { MACD2="뉴 다운 크로싱"; colt14=빨간색; }
if(MACD1=="NEW UP CROSSING"&&MACD2=="상승세")
Alert(Symbol()," - ","H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
if(MACD1=="뉴 다운 크로싱"&&MACD2=="하락 추세")
Alert(Symbol()," - ","H1:"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
if(MACD2=="NEW UP CROSSING"&&MACD1=="인 UPTREND")
Alert(Symbol()," - ","H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
if(MACD2=="뉴 다운 크로싱"&&MACD1=="하락 추세")
Alert(Symbol()," - ","H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
반환(0);
}Minute()==1을 사용하십시오. 상태
수정을 위한 트렌드 Alexcud
if (MaH11v < MaH1pr1v){H11v = "V"; co11v = 빨간색; u1x5v = 0; d1x5v = 1;}
if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = 파란색; u1x5v = 1; d1x5v = 0;}
if (MaH11v == MaH1pr1v){H11v = "0"; co11v = 녹색; u1x5v = 0; d1x5v = 0;}
안녕하세요 여러분, 트렌드를 수정하려고합니다 alexcud(첨부)
나는 "0"이 있는 3개 대신 2개의 신호만 위아래로 원합니다...
그래서 계산이 더 정확할 수 있습니다 ...
어떤 아이디어?
누군가 이 프로그래밍 라인을 이해하는 데 도움을 줄 수 있습니까? 간단한 영어로
그것은 바가 끝난 후 무언가를 시작하는 EA에 관한 것입니다.
코드는 다음과 같습니다.
날짜/시간 이전=0;
// 완료된 바당 한 번만 실행
if(timeprev==시간[0]) return(0);
timeprev = 시간[0];
MQ4 매뉴얼을 보면 Time[0]은 bar[0]의 오픈 시간 을 추출하기 위한 것입니다. 1970년 1월 1일부터 초로 표시됩니다.
나는 그것이 어떻게 작동하는지 이해하지 못한다. 먼저 "timeprev=0"이 있습니다.
그런 다음 다음 줄 "if (timeprev==Time[0]) return(0).
이때 Time[0]의 값은 얼마입니까? 어떻게 그것이 0("timeprev"의 값)이 될 수 있습니까?
다음 줄은 "timeprev=Time[0]"입니다.
왜 전체 라인이 막대가 끝날 때까지 EA가 아무 것도 하지 않게 만드는 이유는 무엇입니까?
Minute()==1을 사용하십시오. 상태
이것은 여전히 각 막대의 첫 번째 분에 각 틱을 설정합니다. 그러면 숫자가 크게 줄어들 수 있지만 여전히 여러 번 경고합니다.
가장 좋은 방법은 전역 변수(또는 객체)를 설정하고 마지막 막대의 Time[]으로 설정하는 것입니다.
if (Time[0]!=lastTime) {
... alert, whatever...
lastTime=Time[0];
}
안녕,
나는 OrderModify 오류 1을 피할 수 없다: 수정하기 전에 데이터가 다르다는 것을 제어하려고 해도 항상 나타난다! 나는 이중 정규화도 시도했습니다 ... 작동하지 않습니다 ...
이것은 코드입니다:
if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit)
{
if (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint)
{
Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,녹색);
어떤 제안?
감사해요.빠른 확인 ... 손익분기점을 너무 짧게 설정하지 않았는지 확인하십시오. MarketInfo(Symbol(),MODE_STOPLEVEL)에 대해 충분히 큰지 확인하십시오.
VPoint의 목적은 무엇입니까? 숫자가 틀리면 문제가 발생합니다. "포인트" 자체는 항상 정확합니다. 해당 번호가 꺼져 있으면 확실히 문제가 발생할 수 있습니다. IE는 실수로 POINT가 실제보다 0 이하입니다.
간단한 코딩 질문
주문 선택(5555, SELECT_BY_TICKET);
새로 고침 비율();
if (문의 >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)) {
주문 닫기(5555,1,문의,10,빨간색); }
if (입찰가 <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)) {
주문종료(5555,1,입찰가,10,파란색); }
그래도 배우려고 노력중...
가격이 공개 가격 에서 5핍 떨어져 있을 때 기본적으로 포지션의 절반(2랏에서 1로)을 마감하는 데 이것이 효과가 있습니까?
감사해요!!!!!!
대략적으로 보입니다. 그래도 좀 지저분합니다. 실제로 달성하고자 하는 것에 따라 OrderProfit을 사용할 수도 있습니다.
럭스
추신: 소수점 이하 5자리 중개인을 조심하라는 언급을 잊었습니다. 모든 것에 10을 곱해야 하므로 귀하의 예에서 5는 50이 됩니다. 행운을 빕니다!
대략 맞는 것 같습니다. 조금 지저분합니다. 실제로 달성하고자 하는 것에 따라 OrderProfit을 사용할 수도 있습니다.
럭스
추신: 소수점 이하 5자리 중개인을 조심하라는 언급을 잊었습니다. 모든 것에 10을 곱해야 하므로 귀하의 예에서 5는 50이 됩니다. 행운을 빕니다!감사합니다
문제는 Windsor 다이렉트를 사용하여 1분 GBP/USD 차트 에서 디버그하기 위해 실행하고 있으며 5핍에 도달할 때 1랏을 닫지 않아 거래가 무엇인지 모릅니다.
또한,
나는 매수를 닫고 즉시 매도를 열려고 하고 있는데 그것도 잘 되지 않습니다.
작동하고 다음은 작동하지 않습니다...
프로그래밍이 훨씬 쉬웠으면 합니다.
만약 (*******************) {
새로 고침 비율();
주문선택(5555,SELECT_BY_TICKET);
if (OrdersTotal() > 0 && OrderType()==OP_BUY) {OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");}
수면(1500);
새로 고침 비율();
if (OrdersTotal() ==0) 티켓 = OrderSend(Symbol(), OP_SELL, lot, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket<0)Print("오류 #로 인해 OrderSend 실패",GetLastError());
}
디버깅 지표
저는 이 언어가 처음이고 지표를 작성하려고 합니다. 디버거가 없기 때문에 문제가 있습니다. Print()를 사용하려고 했지만 아무 것도 인쇄되지 않습니다. Alert()를 사용하여 버퍼[1]에 대한 출력으로 ZERO를 얻습니다. 누구든지 나에게 이것을 설명 할 수 있습니까? 어떻게 Print() 및 Alert()를 사용하여 모든 0을 얻지 않고 디버깅할 수 있습니까? 누구든지 아이디어가 있으면 알려주십시오. 정말 고마워.
tigger.longtail@gmail.com
ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i);
ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i);
현재 표시줄 = 시간;
if( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == 시간 && 플래그 == 0)
{
Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is above. ",Hour()," Minute ",Minute());
Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is above. ",Hour()," Minute ",Minute());
Print("ExtMapBuffer1 = ", ExtMapBuffer1);
Print("ExtMapBuffer2 = ", ExtMapBuffer2);
어쨌든 안돼