|
Скользящие стопы для механических торговых систем MetaStock
Пример скользящего стопа для длинных позиций, который добавляется к уже разработанным условиям открытия и закрытия позиций: Step := 0.02 ; Maxm := 0.2 ; Enter.signal := {условия открытия позиции торговой системой} ; Close.signal := {условия закрытия позиции торговой системой} ; Start := BarsSince( Enter.signal) < BarsSince( Close.signal) AND Ref( BarsSince( Enter.signal), -1) > Ref( BarsSince( Close.signal), -1) ; {определяет первый бар открытой позиции} Enter.Point := ValueWhen( 1, Start, Сlose)) ; {определяет цену закрытия первого бара открытой позции} SIP := Enter. Point - 3 * ATR( 5) ; {точка начального размещения скользящего стопа удалена от цены закрытия первого бара на утроенный средний торговый диапазон последних пяти баров} HighestSince.Enter := HighestSince( 1, Start, Close) ; {определяет последний наибольший максимум достигнутый ценой в ходе данного трейда} cum.para.sar := Cum( If( HighestSince.Enter <> Ref( HighestSince.Enter, -1), step, 0)) ; {если достигнут новый максимум, добавляется значение шага} AF.st := step + (cum.para.sar - ValueWhen( 1, Start, cum.para.sar)) ; {вычисляется значение фактора акселерации} AF := If( AF.st > maxm,maxm, AF.st) ; {проверяется не превысил ли фактор акселерации допустимого максимального значения, если превысил - то приравнивается к максимально допустимому значению} ParaSAR.1 := If( Start, SIP, PREV + AF * ( HighestSince.Enter - PREV)) ; {вычисляется значение скользящего стопа} ParaSAR.1
Как правильно поставить стоп-лосс
стоп-лосс для длинных позиций: Enter.trade := условия открытия длинных позиций ; Close.trade := условия закрытия длинных позиций ; Position := HighestBars( Close.trade) >= HighestBars( Enter.trade) ; Open.Price := ValueWhen( 1, Position = 1 and ref( Position, -1) = 0, Close) ; Full.Price := Open.Price * ( 100 + значение комиссии в %) / 100 ; Close< Full.Price * (( 100 - opt1) / 100)
стоп-лосс для коротких позиций: Enter.trade := условия открытия коротких позиций ; Close.trade := условия закрытия коротких позиций ; Position := HighestBars( Close.trade) >= HighestBars( Enter.trade) ; Open.Price := ValueWhen( 1, Position = 1 and ref( Position, -1) = 0, Close) ; Full.Price := Open.Price * ( 100 - значение комиссии в %) / 100 ; Close> Full.Price * (( 100 - opt1) / 100)
Индикатор уровней сопротивления: Pds := Input( "Periods",2,25,3) ; B := Input( "Field: 1 = Close, 2 = Open, 3 = High, 4 = Low", 1, 4, 1) ; Z := If( B=1, CLOSE, If( B=2, OPEN, If( B=3, HIGH, If( B=4, LOW, 0)))); r1 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; r2 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; r3 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; r4 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; r5 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; r6 := ValueWhen( 1, Ref( Z, -pds) = HHV( Z, 2*pds+1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; R1; R2; R3; R4; R5; R6
Индикатор уровней поддержки: pds:=Input("Periods",2,25,7); B:=Input("Field:1=Close,2=Open,3=High, 4=Low", 1,4,1); Z:=If(B=1,CLOSE,If(B=2,OPEN,If(B=3,HIGH,If(B=4,LOW, 0)))); s1 := ValueWhen( 1, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; s2 := ValueWhen( 2, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; s3 := ValueWhen( 3, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; s4 := ValueWhen( 4, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; s5 := ValueWhen( 5, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; s6 := ValueWhen( 6, Ref( Z, -pds) = LLV( Z, 2 * pds + 1) AND Ref( Z, -pds) < > Ref( Z, -pds - 1), Ref( Z, -pds)) ; S1; S2; S3; S4; S5; S6
|