하지만 왜 ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low); ?
enough ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low);
enough ObjectCreate(_Symbol,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low);
이것은 초보자를위한 흥미로운 기사이지만 전문가 고문의 올바른 작업을 위해서는 약간의 코드 수정이 필요합니다.
안부, 블라디미르.
//+------------------------------------------------------------------+ //|상향 추세선 시스템.mq5 | //+------------------------------------------------------------------+ void OnTick() { int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0); double pLow[]; ArraySetAsSeries(pLow,true); int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow); if(copy_low>0) { int candleLow = ArrayMinimum(pLow,0,candles); MqlRates pArray[]; ArraySetAsSeries(pArray,true); int Data = CopyRates(_Symbol,_Period,0,candles,pArray); ObjectDelete(0,"UpwardTrendline"); ObjectCreate(0,"UpwardTrendline",OBJ_TREND,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low); ObjectSetInteger(0,"UpwardTrendline",OBJPROP_COLOR,Blue); ObjectSetInteger(0,"UpwardTrendline",OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,"UpwardTrendline",OBJPROP_WIDTH,3); ObjectSetInteger(0,"UpwardTrendline",OBJPROP_RAY_RIGHT,true); } } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //|하향 추세선 시스템.mq5 | //+------------------------------------------------------------------+ void OnTick() { int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0); double pHigh[]; ArraySetAsSeries(pHigh,true); int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh); if(copy_high>0) { int candleHigh = ArrayMaximum(pHigh,0,candles); MqlRates pArray[]; ArraySetAsSeries(pArray,true); int Data = CopyRates(_Symbol,_Period,0,candles,pArray); ObjectDelete(0,"DnwardTrendline"); ObjectCreate(0,"DnwardTrendline",OBJ_TREND,0,pArray[candleHigh].time,pArray[candleHigh].high, pArray[0].time,pArray[0].high); ObjectSetInteger(0,"DnwardTrendline",OBJPROP_COLOR,Blue); ObjectSetInteger(0,"DnwardTrendline",OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,"DnwardTrendline",OBJPROP_WIDTH,3); ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true); } } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //|지원 라인 시스템.mq5 | //+------------------------------------------------------------------+ void OnTick() { int candles = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0); double pLow[]; ArraySetAsSeries(pLow,true); int copy_low = CopyLow(_Symbol,_Period,0,candles,pLow); if(copy_low>0) { int candleLow = ArrayMinimum(pLow,0,candles); MqlRates pArray[]; ArraySetAsSeries(pArray,true); int Data = CopyRates(_Symbol,_Period,0,candles,pArray); ObjectDelete(0,"supportLine"); ObjectCreate(0,"supportLine",OBJ_HLINE,0,pArray[candleLow].time,pArray[candleLow].low, pArray[0].time,pArray[0].low); ObjectSetInteger(0,"supportLine",OBJPROP_COLOR,Green); ObjectSetInteger(0,"supportLine",OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,"supportLine",OBJPROP_WIDTH,3); ObjectSetInteger(0,"supportLine",OBJPROP_RAY,true); } } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //|저항선 시스템.mq5 | //+------------------------------------------------------------------+ void OnTick() { int candles=(int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0); double pHigh[]; ArraySetAsSeries(pHigh,true); int copy_high = CopyHigh(_Symbol,_Period,0,candles,pHigh); if(copy_high>0) { int candleHigh = ArrayMaximum(pHigh,0,candles); MqlRates pArray[]; ArraySetAsSeries(pArray,true); int Data = CopyRates(_Symbol,_Period,0,candles,pArray); ObjectDelete(0,"resistanceLine"); ObjectCreate(0,"resistanceLine",OBJ_HLINE,0,pArray[candleHigh].time,pArray[candleHigh].high, pArray[0].time,pArray[0].high); ObjectSetInteger(0,"resistanceLine",OBJPROP_COLOR,Red); ObjectSetInteger(0,"resistanceLine",OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,"resistanceLine",OBJPROP_WIDTH,3); ObjectSetInteger(0,"DnwardTrendline",OBJPROP_RAY_RIGHT,true); } } //+------------------------------------------------------------------+
Andrei Pereira 추세선에 대한 한 가지 관찰 사항: 두 번째 앵커 포인트가 항상 0 지수 막대인 경우 새 막대가 생길 때마다 추세선이 업데이트되어 추세선이 쓸모가 없어지므로 별 소용이 없습니다. 가장 이상적인 방법은 특정 기준에 따라 두 번째 앵커 포인트를 정의하는 것입니다. 예를 들어 가격이 가장 높은 두 번째 막대는 첫 번째 막대에서 최소 30개 이상 떨어져 있거나 다음날 가격이 가장 높은 막대를 취하는 등의 방법입니다.
기사 작성 축하드립니다.
기사 작성 축하드립니다.
의견 주셔서 감사합니다. 좋은 관찰입니다.
새로운 기고글 MQL5에서 라인을 다루는 방법 가 게재되었습니다:
이 글에서는 추세선, 지지선, 저항선과 같은 가장 중요한 선을 MQL5로 다루는 방법을 알아보세요.
우리는 추세선 유형에 따라 주문하는 방식으로 추세선을 트레이딩에 사용할 수 있습니다. 상승 추세선이 있는 경우 우리는 가격이 하락하여 이 추세선을 위에서 테스트한 후 반등하여 상승할 것으로 예상하고 이 추세선을 중심으로 매수 주문을 넣을 수 있습니다. 반대로 하락 추세선이 있다면 가격이 상승하여 이 추세선을 테스트하고 하락할 수 있으며 이 하락 추세선을 중심으로 우리는 공매도 또는 매도 주문을 넣을 수 있습니다.
다음은 상승 추세선에 대한 것입니다:
이 그림에서 우리는 상승 움직임이 있음을 알 수 있으며 마지막 세 저점 사이를 연결해보면 같은 선상에 있는 것을 확인할 수 있습니다.
작성자: Mohamed Abdelmaaboud