@SetName('CSP'); @SETTEXTVISIBLE(True); --Spinning Top; BullSpinTop1 := C > O; BullSpinTop2 := H > C & L < O; BullSpinTop3 := ABS(C - O) < ABS(H - L)/3; BullSpinTop4 := ABS(C - O) > ABS(H - L)/10; BullSpinTop5 := ABS(H - C) > ABS(C - O) & ABS(L - O) > ABS(C - O); BullSpinTop := BullSpinTop1 & BullSpinTop2 & BullSpinTop3 & BullSpinTop4 & BullSpinTop5; DRAWTEXT(BullSpinTop & OnSpinningTop, L-LabelGap, 'Spinning\nTop'),Label2,VCenter,Bottom; BearSpinTop1 := C < O; BearSpinTop2 := H > O & L < C; BearSpinTop3 := ABS(C - O) < ABS(H - L)/3; BearSpinTop4 := ABS(C - O) > ABS(H - L)/10; BearSpinTop5 := ABS(H - O) > ABS(C - O) & ABS(L - C) > ABS(C - O); BearSpinTop:= BearSpinTop1 & BearSpinTop2 & BearSpinTop3 & BearSpinTop4 & BearSpinTop5; DRAWTEXT(BearSpinTop & OnSpinningTop, H+LabelGap, 'Spinning\nTop'),Label1,VCenter,Top; --Marobozu; BullMarubozu1 := C > O; BullMarubozu2 := H == C & L == O; BullMarubozu:= BullMarubozu1 & BullMarubozu2; DRAWTEXT(BullMarubozu & OnMarubozu, L-LabelGap, 'Marubozu'),Label2,VCenter,Bottom; BearMarubozu1 := C < O; BearMarubozu2 := H == O & L == C; BearMarubozu:= BearMarubozu1 & BearMarubozu2; DRAWTEXT(BearMarubozu & OnMarubozu, H+LabelGap, 'Marubozu'),Label1,VCenter,Top; -- Doji; Doji1 := O == C | ABS(O-C) < ABS(H-L)/10; Doji2 := H > O & L < O; Doji := Doji1 & Doji2; DRAWTEXT(Doji & OnDoji, H+LabelGap, 'Doji'),Label3,VCenter,Top; -- 4 Price Doji; Price4Doji1 := O == C; Price4Doji2 := H == O & L == O; Price4Doji := Price4Doji1 & Price4Doji2; DRAWTEXT(Price4Doji & OnDoji, L-LabelGap, '4Price\nDoji'),Label3,VCenter,Bottom; -- Dragonfly Doji; DragonflyDoji1 := O == C | ABS(O-C) < ABS(H-L)/10; DragonflyDoji2 := H == O & L < O; DragonflyDoji := DragonflyDoji1 & DragonflyDoji2; DRAWTEXT(DragonflyDoji & OnDoji, H+LabelGap, 'Dragonfly'),Label3,VCenter,Top; -- Gravestone Doji; GravestoneDoji1 := O == C | ABS(O-C) < ABS(H-L)/10; GravestoneDoji2 := L == O & H > O; GravestoneDoji := GravestoneDoji1 & GravestoneDoji2; DRAWTEXT(GravestoneDoji & OnDoji, L-LabelGap, 'Gravestone'),Label3,VCenter,Bottom; -- Hammer; Hammer1 := C > O & O <= Ref(C,1); Hammer2 := H >= C & L < O; Hammer3 := ABS(O - L) > ABS(O - C)*2; Hammer4 := ABS(H - C) <= ABS(O - C)/10; Hammer5 := Ref(C,1) < Ref(O,1) & Ref(C,2) < Ref(O,2); Hammer := Hammer1 & Hammer2 & Hammer3 & Hammer4 & Hammer5; DRAWTEXT(Hammer & OnHammerHangman, L-LabelGap, 'Hammer'),Label2,VCenter,Bottom; -- Hangman; Hangman1 := C < O & O >= Ref(C,1); Hangman2 := H >= O & L < O; Hangman3 := ABS(C - L) > ABS(O - C)*2; Hangman4 := ABS(H - O) <= ABS(O - C)/10; Hangman5 := Ref(C,1) > Ref(O,1) & Ref(C,2) > Ref(O,2); Hangman := Hangman1 & Hangman2 & Hangman3 & Hangman4 & Hangman5; DRAWTEXT(Hangman & OnHammerHangman, H+LabelGap, 'Hangman'),Label1,VCenter,Top; -- Inverted Hammer; IHammer1 := C > O & O <= Ref(C,1); IHammer2 := H > C & L <= O; IHammer3 := ABS(H - C) > ABS(O - C)*2; IHammer4 := ABS(L - O) <= ABS(O - C)/10; IHammer5 := Ref(C,1) < Ref(O,1) & Ref(C,2) < Ref(O,2); IHammer := IHammer1 & IHammer2 & IHammer3 & IHammer4 & IHammer5; DRAWTEXT(IHammer & OnIHammerShootStar, L-LabelGap, 'Inverted\nHammer'),Label2,VCenter,Bottom; -- Shooting Star; ShootingStar1 := C < O & O >= Ref(C,1); ShootingStar2 := H > O & L <= C; ShootingStar3 := ABS(H - O) > ABS(O - C)*2; ShootingStar4 := ABS(L - C) <= ABS(O - C)/10; ShootingStar5 := Ref(C,1) > Ref(O,1) & Ref(C,2) > Ref(O,2); ShootingStar := ShootingStar1 & ShootingStar2 & ShootingStar3 & ShootingStar4 & ShootingStar5; DRAWTEXT(ShootingStar & OnIHammerShootStar, H+LabelGap, 'Shooting\nStar'),Label1,VCenter,Top; -- Bullish Engulfing; BullEngulf1 := C > O; BullEngulf2 := O < Ref(L,1) & C > Ref(H,1); BullEngulf3 := Ref(C,1) < Ref(O,1); BullEngulf := BullEngulf1 & BullEngulf2 & BullEngulf3; DRAWTEXT(BullEngulf & OnEngulf, L-LabelGap, 'Bull\nEngulf'),Label2,VCenter,Bottom; -- Bearish Engulfing; BearEngulf1 := C < O; BearEngulf2 := C < Ref(L,1) & O > Ref(H,1); BearEngulf3 := Ref(C,1) > Ref(O,1); BearEngulf := BearEngulf1 & BearEngulf2 & BearEngulf3; DRAWTEXT(BearEngulf & OnEngulf, H+LabelGap, 'Bear\nEngulf'),Label1,VCenter,Top; -- Tweezer Bottom; TweezerB1 := C > O & ABS(L - Ref(L,1)) < 10; TweezerB2 := ABS(C - Ref(O,1)) < 10 & ABS(O - Ref(C,1)) < 10; TweezerB3 := Ref(L,1) < Ref(C,1) & L < O; TweezerB4 := Ref(O,1) == Ref(H,1) & C == H; TweezerB5 := Ref(C,1) < Ref(O,1) & Ref(C,2) < Ref(O,2); TweezerB6 := (ABS(O-L) > ABS(O-C)/3) & ((ABS(Ref(C,1)-Ref(L,1))) > (ABS(Ref(O,1)-Ref(C,1))/3)); TweezerB := TweezerB1 & TweezerB2 & TweezerB3 & TweezerB4 & TweezerB5 & TweezerB6; DRAWTEXT(TweezerB & OnTweezer, L-LabelGap, 'Tweezer'),Label2,VCenter,Bottom; -- Tweezer Top; TweezerT1 := C < O & ABS(H - Ref(H,1)) < 10; TweezerT2 := ABS(C - Ref(O,1)) < 10 & ABS(O - Ref(C,1)) < 10; TweezerT3 := Ref(H,1) > Ref(C,1) & H > O; TweezerT4 := Ref(O,1) == Ref(L,1) & C == L; TweezerT5 := Ref(C,1) > Ref(O,1) & Ref(C,2) > Ref(O,2); TweezerT6 := (ABS(O-H) > ABS(O-C)/3) & ((ABS(Ref(C,1)-Ref(H,1))) > (ABS(Ref(O,1)-Ref(C,1))/3)); TweezerT := TweezerT1 & TweezerT2 & TweezerT3 & TweezerT4 & TweezerT5 & TweezerT6 ; DRAWTEXT(TweezerT & OnTweezer, H+LabelGap, 'Tweezer'),Label1,VCenter,Top; -- Morning Star; MorningStarB1 := Ref(IsDown,2); MorningStarB2 := (Ref(IsDown,3) + Ref(IsDown,4) + Ref(IsDown,5) + Ref(IsDown,6)) > 2; MorningStarB3 := Ref(Doji,1) | Ref(Price4Doji,1) | Ref(DragonflyDoji,1) | Ref(GravestoneDoji,1); MorningStarB4 := IsUp; MorningStarB5 := C > (Ref(C,2) + (ABS(Ref(O,2) - Ref(C,2)))); MorningStarB6 := ABS(Ref(O,1) - Ref(C,1)) < ABS(Ref(O,2) - Ref(C,2))/4; MorningStarB := MorningStarB1 & MorningStarB2 & MorningStarB3 & MorningStarB4 & MorningStarB5 & MorningStarB6; DRAWTEXT(MorningStarB & OnStar, L-LabelGap, 'Morning\nStar'),Label2,VCenter,Bottom; -- Evening Star; EveningStarB1 := Ref(IsUp,2); EveningStarB2 := (Ref(IsUp,3) + Ref(IsUp,4) + Ref(IsUp,5) + Ref(IsUp,6)) > 2; EveningStarB3 := Ref(Doji,1) | Ref(Price4Doji,1) | Ref(DragonflyDoji,1) | Ref(GravestoneDoji,1); EveningStarB4 := IsDown; EveningStarB5 := C < (Ref(C,2) - (ABS(Ref(O,2) - Ref(C,2)))); EveningStarB6 := ABS(Ref(O,1) - Ref(C,1)) < ABS(Ref(O,2) - Ref(C,2))/4; EveningStarB := EveningStarB1 & EveningStarB2 & EveningStarB3 & EveningStarB4 & EveningStarB5 & EveningStarB6; DRAWTEXT(EveningStarB & OnStar, H+LabelGap, 'Evening\nStar'),Label1,VCenter,Top; -- GapUp; GapUp := L > REF(H,1); DRAWTEXT(GapUp & OnGap, L-LabelGap, 'Gap'),Label2,VCenter,Bottom; -- GapDown; GapDown := H < REF(L,1); DRAWTEXT(GapDown & OnGap, H+LabelGap, 'Gap'),Label1,VCenter,Top; -- JumpUp; JumpUp1 := Ref(IsDown,1) & IsUp & O == L; JumpUp2 := O > Ref(O,1); JumpUp3 := O > (REF(L,1) + (ABS(REF(L,1)-REF(H,1))*0.8)); JumpUp := JumpUp1 & JumpUp2 & JumpUp3; DRAWTEXT(JumpUp & OnGap, L-LabelGap, 'Jump'),Label2,VCenter,Bottom; -- JumpDown; JumpDown1 := Ref(IsUp,1) & IsDown & O == H; JumpDown2 := O < Ref(O,1); JumpDown3 := O < (REF(H,1) - (ABS(REF(L,1)-REF(H,1))*0.8)); JumpDown := JumpDown1 & JumpDown2 & JumpDown3; DRAWTEXT(JumpDown & OnGap, H+LabelGap, 'Jump'),Label1,VCenter,Top;