我想在下面的图片中找到带圆圈的插销。对于右边的蜡烛,蜡烛的主体大约是蜡烛大小的1/5,对于左边的蜡烛,蜡烛的主体大约是蜡烛大小的1/7,蜡烛芯的长度是蜡烛的1/7底部尺寸。我如何使用iOpen()
,iLow()
和其他类似功能来找到这两种类型的插针式广告?
答案 0 :(得分:1)
Q :我如何使用
iOpen()
,iLow()
和其他类似功能来找到这两种类型的插针杆?
可以使用这样的工作模板,例如 WasThisTheUserDefinedBearishPATTERN()
函数,并且已定义了所有用户特定的条件和常量,只需将
if ( WasThisTheUserDefinedBearishPATTERN( aShift, 4.5, 0.1, 2000 ) ) { do_something(); }
用于以下用途即可交易:
bool WasThisTheUserDefinedBearishPATTERN( const int aBarNUMBER,
const double aBody2uWICK_MUL,
const double min_FRACTION,
const double MAX_FRACTION
) {
// BAR-UPPER-wick:
double aBarUpWK = ( iHigh( _Symbol, PERIOD_CURRENT, aBarNUMBER )
- iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
);
// BAR-body:
double aBarBODY = ( iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
- iOpen( _Symbol, PERIOD_CURRENT, aBarNUMBER )
);
// BAR-LOWER-wick:
double aBarLoWK = ( iLow( _Symbol, PERIOD_CURRENT, aBarNUMBER )
- iClose( _Symbol, PERIOD_CURRENT, aBarNUMBER )
);
// FLAG:
bool aBearishFLAG = FALSE;
// -----------------------------------------------------------------
// USER-DEFINE-ABLE SET OF SHAPE-CONDITIONS ..... = add all that apply
// BEARISH BODY:
// has body
// has body BEARISH
// has body not more than about a lo-wick size * < min_FRACTION, MAX_FRACTION >
// has body not less than about a hi-wick size * _MUL
// -------------
if ( aBarBODY >= 0 // not BEARISH
|| aBarUpWK < aBarBODY * aBody2uWICK_MUL // not long enough UpperWICK
){
aBearishFLAG = FALSE; // (NO)
}
else { if ( aBarBODY < 0 // has BEARISH CANDLE
&& ( aBarLoWK == 0 // and may LO-WICK ZERO
|| ( aBarLoWk / aBarBODY > min_FRACTION // .GT. min-WICK-2-BODY-FRACTION
&& aBarLoWk / aBarBODY < MAX_FRACTION // .LT. MAX-WICK-2-BODY-FRACTION
)
)
){ aBearishFLAG = TRUE; } // (YES)
else { aBearishFLAG = FALSE; } // ( NO) OTHERWISE
}
return( aBearishFLAG );
}
我确实做了
WasThisTheUserDefinedBearishPATTERN( aShift, 1, 1/6, 2/6 )
,并期望它会导致某些事情……
除了下面的评论,还请尊重MQL4语言世界的规则:
Print( "DIV( 1 / 7 ) == ", 1 / 7 ); // will show you The Rules
Print( "DIV( 1. / 7. ) == ", 1. / 7. ); // will show you The Rules
答案 1 :(得分:0)
因此,我的处理方式如下:
1)我要定义的每支蜡烛的特征是什么?
a)向下或向上(我更喜欢1或-1)
b)与身体相比相对的大甩尾
c)与非拒绝尾巴相比相对的大拒绝尾巴
d)与拒绝尾巴相对的小身体
2)我们如何使用预定义的函数在MQL4中对此进行编码?
首先让我们做一些假设...
首先,您要实时定义这些蜡烛,以便在它们形成时执行。
第二,让我们离开M30
的任何给定Symbol()
。
以下功能(未测试)将在有买入信号时返回1
,在有卖出信号时返回-1
,如果没有买入信号,则返回0
。您将需要相应地调整extern
变量,因为这比“一刀切”更像一门科学。另外,您可能需要使用IsNewBar
。
//the values below should sum to 100
extern int RTail_To_Range_Ratio = 80; //rejection tail ratio to range of candle
extern int Body_To_Range_Ratio = 10; //body size ratio to range of candle
extern int NRTail_To_Range_Ratio = 10; //non-rejection tail ratio to range of candle
int Signal()
{
//candle information
double dOpen = iOpen(Symbol(),PERIOD_M30,0);
double dHigh = iHigh(Symbol(),PERIOD_M30,0);
double dLow = iLow(Symbol(),PERIOD_M30,0);
double dClose = iClose(Symbol(),PERIOD_M30,0);
double dBody = MathAbs(dOpen - dClose);
double dRange = dHigh - dLow;
double dRTail = 0, dTail = 0;
//green candle
if(dClose > dOPen){
dRTail = dOPen - dLow;
dTail = dHigh - dClose;
//now check ratios
if((dTail / dRange) <= (NRTail_To_Range_Ratio / 100) && (dBody / dRange) <= (Body_To_Range_Ratio / 100) && (dRTail / dRange) >= (RTail_To_Range_Ratio / 100)){
return 1;
}
}
//red candle
else{
dRTail = dHigh - dOpen;
dTail = dClose - dLow;
//now check ratios
if((dTail / dRange) <= (NRTail_To_Range_Ratio / 100) && (dBody / dRange) <= (Body_To_Range_Ratio / 100) && (dRTail / dRange) >= (RTail_To_Range_Ratio / 100)){
return -1;
}
}
return 0;
}
让我知道@SuperHueman是否可以解决您的问题。