Initial Commit ...
This commit is contained in:
@@ -0,0 +1,501 @@
|
||||
# OSC Signalling Conditions
|
||||
|
||||
there are some Verifications For signals.
|
||||
here i described them.
|
||||
|
||||
## Long
|
||||
|
||||
- OSC
|
||||
- When Market Middleage Cross Over MC Fast
|
||||
- When MCFast Under MC Slow
|
||||
- When MakretMiddleage
|
||||
|
||||
```mql4
|
||||
// //
|
||||
// // XMA Based Signals ...
|
||||
// hasLongSignal =
|
||||
// //
|
||||
// // XMA ...
|
||||
// //
|
||||
// // SC Fast Cross Over Market Middleage ...
|
||||
// xmaState.scFast > xmaState.marketMiddleage
|
||||
// && !(xmaState.scFastPrev > xmaState.marketMiddleage)
|
||||
// //
|
||||
// // when Short Cycle is Trending Up ...
|
||||
// && xmaState.scFast > xmaState.scSlow
|
||||
// && xmaState.scFastPrev > xmaState.scSlowPrev
|
||||
// //
|
||||
// // When Medium Cycle is Trending Up ...
|
||||
// && xmaState.mcFast > xmaState.mcSlow
|
||||
// && xmaState.mcFastPrev > xmaState.mcSlowPrev
|
||||
// //
|
||||
// // and Medium Cycle TrendPower is Going Up ...
|
||||
// && MathAbs(xmaState.mcFast - xmaState.mcSlow) >
|
||||
// MathAbs(xmaState.mcFastPrev - xmaState.mcSlowPrev)
|
||||
// //
|
||||
// // When Long Cycle is Trending Up ...
|
||||
// && xmaState.lcFast > xmaState.lcSlow
|
||||
// && xmaState.lcFastPrev > xmaState.lcSlowPrev
|
||||
// //
|
||||
// // and Long Cycle TrendPower is Going Up ...
|
||||
// && MathAbs(xmaState.lcFast - xmaState.lcSlow) >
|
||||
// MathAbs(xmaState.lcFastPrev - xmaState.lcSlowPrev)
|
||||
// //
|
||||
// // Short Cycle Slow bigger thhan Medium Cycle Fast ...
|
||||
// && xmaState.scSlow > xmaState.mcFast
|
||||
// //
|
||||
// // OSC ...
|
||||
// // Check OSC Fast and Slow is Less than 0.5 ...
|
||||
// && oscState.fastOSC < 0.5
|
||||
// && oscState.slowOSC < 0.5
|
||||
// && oscState.fastOSCPrev < 0.5
|
||||
// && oscState.slowOSCPrev < 0.5
|
||||
// && oscState.fastOSC > oscState.fastOSCPrev
|
||||
// //
|
||||
// // Check OSC Minimum Signal Power ...
|
||||
// // this Helps for Detect Market exits from Ranging ...
|
||||
// && minPowOSC > 0
|
||||
// ?
|
||||
// //
|
||||
// // Check Conditions only if value provided ...
|
||||
// oscState.powerOSCPrev < 0
|
||||
// && MathAbs(oscState.powerOSCPrev) > minPowOSC
|
||||
// :
|
||||
// //
|
||||
// // ... other wise, ignore ...
|
||||
// true
|
||||
// //
|
||||
// // Check Previous Candle Signal Power must be Lower than
|
||||
// // Current Signal Power and the Direction Must be Up Trend ...
|
||||
// && oscState.powerOSCPrev < oscState.powerOSC
|
||||
// //
|
||||
// // Also we Have to Check Market not ranging ...
|
||||
// && !IsOSCMarketRanging(
|
||||
// bar_index + 1,
|
||||
// marketLen,
|
||||
// minPowOSC,
|
||||
// fastOSCLen,
|
||||
// fastOSCMul,
|
||||
// slowOSCLen,
|
||||
// slowOSCMul
|
||||
// )
|
||||
// //
|
||||
// // ZIGZAG ...
|
||||
// && zigZagState.isWaitForTrendDown
|
||||
// && !zigZagState.isWaitForTrendUp
|
||||
// //
|
||||
// // XADX ...
|
||||
// // TODO: add XADX Base Conditions for Long Trades ...
|
||||
// // When ADX Trend Power bigger than 20 and less than 50 ...
|
||||
// && !adxState.trendPower < 23
|
||||
// && !adxState.trendPowerPrev < 23
|
||||
// //
|
||||
// // Check Trend Direction for Signals ...
|
||||
// && adxState.upDirection > adxState.downDirection
|
||||
// && adxState.upDirectionPrev > adxState.downDirectionPrev
|
||||
// // && adxState.trendPower < 50
|
||||
// // && adxState.trendPower > adxState.trendPowerPrev
|
||||
// //
|
||||
// // PRICE Checking ...
|
||||
// // price must be less than Candle High at openning time ...
|
||||
// && longEntryPrice <= candleHigh
|
||||
// //
|
||||
// // also Candle High and Low must be above than lc Fast & lc Slow ...
|
||||
// && longEntryPrice > xmaState.lcFast
|
||||
// && longEntryPrice > xmaState.lcSlow
|
||||
// && (
|
||||
// !IsSharpBullishHappens(
|
||||
// bar_index,
|
||||
// marketLen * 2
|
||||
// )
|
||||
// || IsSharpBearishHappens(
|
||||
// bar_index,
|
||||
// marketLen * 2
|
||||
// )
|
||||
// )
|
||||
// ;
|
||||
|
||||
//
|
||||
// Check for Long Trades if some Sharp Bullish Happens,
|
||||
// Decrease sl size for fixing tps ...
|
||||
// if (isSharpBullishHappens) {
|
||||
// sl = sl / 1.5;
|
||||
// }
|
||||
|
||||
//
|
||||
// TODO: Remove this ...
|
||||
// if (xmaStates[0].marketMiddleage > xmaStates[1].marketMiddleage) {
|
||||
// r2rRatio = r2rRatio * 2;
|
||||
// }
|
||||
|
||||
//
|
||||
hasLongSignal =
|
||||
//
|
||||
// Global ...
|
||||
true
|
||||
//
|
||||
&& (
|
||||
//
|
||||
// XMA ...
|
||||
(
|
||||
//
|
||||
true
|
||||
//
|
||||
// Check Medium Cycle is in TrendDown ...
|
||||
&& xmaStates[0].mcSlow > xmaStates[0].mcFast
|
||||
&& xmaStates[1].mcSlow > xmaStates[1].mcFast
|
||||
&& xmaStates[2].mcSlow > xmaStates[2].mcFast
|
||||
//
|
||||
// Check Market Middleage Cross Over MC Slow ...
|
||||
// && isMarketMiddleCrossOverMCSlow
|
||||
// && xmaStates[0].marketMiddleage >= (5 * _Point);
|
||||
&& xmaStates[0].marketMiddleage > xmaStates[0].mcSlow
|
||||
&& !(xmaStates[1].marketMiddleage >= xmaStates[1].mcSlow)
|
||||
//
|
||||
// IMPORTANT: by passing this condition i can Increase r2r ration ...
|
||||
// && xmaStates[0].marketMiddleage > xmaStates[1].marketMiddleage
|
||||
&& MathAbs(xmaStates[0].marketMiddleage - xmaStates[1].marketMiddleage) > _Point
|
||||
)
|
||||
// ||
|
||||
//
|
||||
// OSC ...
|
||||
// (
|
||||
// //
|
||||
// true
|
||||
// //
|
||||
// // Check osc fast cross over slow ...
|
||||
// && oscStates[1].fastOSC > oscStates[1].slowOSC
|
||||
// && !(oscStates[2].fastOSC >= oscStates[2].slowOSC)
|
||||
// //
|
||||
// // Check OSC Fast bigger than 0.5 ...
|
||||
// && oscStates[1].fastOSC > 0.5
|
||||
// && (
|
||||
// xmaStates[1].mcFast > xmaStates[1].mcSlow
|
||||
// ?
|
||||
// //
|
||||
// xmaStates[1].marketMiddleage > xmaStates[1].mcSlow
|
||||
// //
|
||||
// && xmaStates[1].marketMiddleage > xmaStates[2].marketMiddleage
|
||||
// && xmaStates[1].marketMiddleage > xmaStates[3].marketMiddleage
|
||||
// && xmaStates[2].marketMiddleage > xmaStates[3].marketMiddleage
|
||||
// :
|
||||
// true
|
||||
// )
|
||||
// )
|
||||
)
|
||||
;
|
||||
```
|
||||
|
||||
```mql4
|
||||
//
|
||||
// TODO: Determines Where and How close Long Trades on Trend Reversal Points ...
|
||||
closeLongTrades =
|
||||
false
|
||||
//
|
||||
// This is One Conditions ...
|
||||
// (
|
||||
// //
|
||||
// xmaStates[0].marketMiddleage < xmaStates[0].mcFast
|
||||
// && (
|
||||
// xmaStates[0].marketMiddleage < xmaStates[0].mcSlow
|
||||
// || xmaStates[1].marketMiddleage < xmaStates[1].mcSlow
|
||||
// || xmaStates[2].marketMiddleage < xmaStates[2].mcSlow
|
||||
// )
|
||||
// //
|
||||
// && xmaStates[0].mcFast > xmaStates[0].mcSlow
|
||||
// //
|
||||
// && xmaStates[0].marketMiddleage < xmaStates[1].marketMiddleage
|
||||
// && xmaStates[1].marketMiddleage < xmaStates[2].marketMiddleage
|
||||
// )
|
||||
;
|
||||
|
||||
//
|
||||
waitForLongSignals =
|
||||
true;
|
||||
// waitForLongSignals
|
||||
// ?
|
||||
// //
|
||||
// true
|
||||
// //
|
||||
// // Closing Options ...
|
||||
// //
|
||||
// // Trades Doesnt Closed ...
|
||||
// && !closeLongTrades
|
||||
// //
|
||||
// // PRICE ...
|
||||
// //
|
||||
// // Bullish Sharp doesnt occured ...
|
||||
// && !isSharpBullishHappens
|
||||
// //
|
||||
// // XMA ...
|
||||
// //
|
||||
// && xmaStates[0].marketMiddleage < xmaStates[0].mcFast
|
||||
// && !(
|
||||
// //
|
||||
// // On MC Trend Up ...
|
||||
// xmaStates[0].mcFast > xmaStates[0].mcSlow
|
||||
// ?
|
||||
// //
|
||||
// // Market Middleage doesnt Trending Down ...
|
||||
// xmaStates[0].marketMiddleage - xmaStates[0].mcFast > xmaStates[1].marketMiddleage - xmaStates[1].mcFast
|
||||
// && xmaStates[0].marketMiddleage - xmaStates[0].mcFast > xmaStates[2].marketMiddleage - xmaStates[2].mcFast
|
||||
// && xmaStates[0].marketMiddleage - xmaStates[0].mcFast > xmaStates[3].marketMiddleage - xmaStates[3].mcFast
|
||||
// && xmaStates[1].marketMiddleage - xmaStates[1].mcFast > xmaStates[3].marketMiddleage - xmaStates[3].mcFast
|
||||
// :
|
||||
// true
|
||||
// )
|
||||
// :
|
||||
// //
|
||||
// true
|
||||
// && (
|
||||
// //
|
||||
// // PRICE ...
|
||||
// // isSharpBearishHappens
|
||||
// //
|
||||
// // XMA ...
|
||||
// isMCFastCrossUnderSlow
|
||||
// || isMarketMiddleCrossUnderMCSlow
|
||||
// )
|
||||
;
|
||||
```
|
||||
|
||||
```mql4
|
||||
//
|
||||
bool xmaHasLongSignal =
|
||||
//
|
||||
// Global ...
|
||||
true
|
||||
//
|
||||
// XMA ...
|
||||
//
|
||||
// Check Medium Cycle is in TrendDown ...
|
||||
// && xmaStates[0].mcSlow > xmaStates[0].mcFast
|
||||
// && xmaStates[1].mcSlow > xmaStates[1].mcFast
|
||||
// && xmaStates[2].mcSlow > xmaStates[2].mcFast
|
||||
//
|
||||
// Check Market Middleage Cross Over MC Slow ...
|
||||
&& isMarketMiddleageTrendUp
|
||||
//
|
||||
// Check distance between Medium Cycle Market
|
||||
&& isMarketMiddleCrossOverMCSlow
|
||||
// && xmaStates[0].marketMiddleage > xmaStates[0].mcSlow
|
||||
// && MathAbs(xmaStates[1].marketMiddleage - xmaStates[2].mcSlow) > _Point
|
||||
//
|
||||
// IMPORTANT: by passing this condition i can Increase r2r ration ...
|
||||
// && xmaStates[0].marketMiddleage > xmaStates[1].marketMiddleage
|
||||
&& MathAbs(xmaStates[1].marketMiddleage - xmaStates[2].marketMiddleage) > _Point
|
||||
//
|
||||
// OSC ...
|
||||
&& oscStates[1].fastOSC > 0.5
|
||||
&& !isOSCPowerTrendDown
|
||||
&& oscStates[1].powerOSC > 0
|
||||
//
|
||||
// PRICE ...
|
||||
&& !isSharpBullishHappens
|
||||
&& longEntryPrice < marketHigh[0]
|
||||
&& marketHigh[0] > marketHigh[1]
|
||||
&& marketHigh[0] > marketHigh[2]
|
||||
;
|
||||
|
||||
//
|
||||
bool oscHasLongSignal =
|
||||
//
|
||||
false
|
||||
//
|
||||
// OSC ...
|
||||
//
|
||||
// Check osc is Trending Up ...
|
||||
// isOSCTrendUp
|
||||
//
|
||||
// Check osc fast cross over slow ...
|
||||
// isOSCFastCrossOverSlow
|
||||
//
|
||||
// Check OSC Market not Ranging ...
|
||||
// && !isOSCMarketRanging
|
||||
//
|
||||
// Check OSC Fast bigger than 0.5 ...
|
||||
// && oscStates[1].fastOSC > 0.5
|
||||
// && oscStates[1].slowOSC > 0.5
|
||||
//
|
||||
// PRICE ...
|
||||
// && !isSharpBullishHappens
|
||||
// && longEntryPrice < marketHigh[0]
|
||||
// && marketHigh[0] > marketHigh[1]
|
||||
// && marketHigh[0] > marketHigh[2]
|
||||
;
|
||||
|
||||
//
|
||||
bool hasLongSignal =
|
||||
xmaHasLongSignal
|
||||
||
|
||||
oscHasLongSignal
|
||||
;
|
||||
```
|
||||
|
||||
```mql4
|
||||
//
|
||||
bool hasLongSignal =
|
||||
//
|
||||
// Global ...
|
||||
true
|
||||
//
|
||||
&&
|
||||
// XMA ...
|
||||
//
|
||||
// Check Parabolic Sar Cross Under Market Middleage
|
||||
// Or Trending Down ...
|
||||
isParabolicCrossUnderMarketMiddle
|
||||
&&
|
||||
//
|
||||
// Check PSar Value is Bigger Than Market Middleage ...
|
||||
xmaStates[1].parabolicSAR < xmaStates[1].marketMiddleage
|
||||
&&
|
||||
//
|
||||
// Check Parabolic Revrse Change bigger than Prev Cancle Close ...
|
||||
xmaStates[1].parabolicSAR < MathMin(marketOpen[1], marketClose[1])
|
||||
&&
|
||||
//
|
||||
// Now We Have Separate our Conditions based on
|
||||
// Market Trends ...
|
||||
//
|
||||
// Medium Cycle Market Trends Up ...
|
||||
isMCTrendUp
|
||||
?
|
||||
(
|
||||
//
|
||||
// Market Middle must be in Trending Up ...
|
||||
isMarketMiddleageTrendUp
|
||||
&&
|
||||
//
|
||||
// Market Middle Must be less than Maximum in Cycle ...
|
||||
xmaStates[1].marketMiddleage < marketMiddlesMinMax.max
|
||||
&&
|
||||
//
|
||||
// Market Middleage must be above of MC Fast ...
|
||||
xmaStates[1].marketMiddleage > xmaStates[1].mcFast
|
||||
&&
|
||||
//
|
||||
// Check Distance between SC Fast and Market Middle ...
|
||||
MathAbs(xmaStates[1].scFast - xmaStates[1].scSlow) > (3 * _Point)
|
||||
//
|
||||
// Minimum Signal Power of OSC ...
|
||||
// MathAbs(oscStates[1].powerOSC > minPowOSC)
|
||||
)
|
||||
:
|
||||
//
|
||||
// Medium Cycle Market Trends Down ...
|
||||
false
|
||||
// ()
|
||||
;
|
||||
```
|
||||
|
||||
```mql4
|
||||
//
|
||||
// Based On MC Market Trend Up ...
|
||||
//
|
||||
// Based On MC Market Down Trend ...
|
||||
// isMCTrendDown
|
||||
// || isMCFastCrossUnderSlow
|
||||
// ?
|
||||
// (
|
||||
//
|
||||
// Find SC Fast Cross Over SC Slow, which happens betweentwo of SC Fast Under SC Slow ...
|
||||
// isSCFastCrossOverSlow
|
||||
|
||||
// //
|
||||
// // Find the Moment which Market Middleage Cross Over MC Fast ...
|
||||
// isMarketMiddleCrossOverMCFast
|
||||
// //
|
||||
// // Check Parabolix SAR for Long Trades ...
|
||||
// && xmaStates[0].parabolicSAR < xmaStates[0].marketMiddleage
|
||||
// && xmaStates[1].parabolicSAR < xmaStates[1].marketMiddleage
|
||||
// //
|
||||
// // Check Market Middle and Parabolic SAR Distance ...
|
||||
// && MathAbs(xmaStates[1].marketMiddleage - xmaStates[1].parabolicSAR) >= 1
|
||||
// //
|
||||
// // Check Distance between MCSlow and MCFast bigger than MarketMiddle and Parabolic SAR ...
|
||||
// && MathAbs(xmaStates[1].mcFast - xmaStates[1].mcSlow) > MathAbs(xmaStates[1].marketMiddleage - xmaStates[1].parabolicSAR)
|
||||
// )
|
||||
// :
|
||||
// //
|
||||
// // Based On MC Market Up Trend ...
|
||||
// false
|
||||
```
|
||||
|
||||
```mql4
|
||||
//
|
||||
oscHasLongSignal =
|
||||
//
|
||||
oscStates[0].fastOSC > oscStates[0].slowOSC
|
||||
&& (
|
||||
(
|
||||
oscStates[0].fastOSC > 0.5
|
||||
&& oscStates[0].fastOSC < 0.75
|
||||
)
|
||||
|| oscStates[0].fastOSC <= 0.5
|
||||
)
|
||||
&& (
|
||||
oscStates[0].powerOSC > 0
|
||||
|| oscStates[1].powerOSC > 0
|
||||
)
|
||||
//
|
||||
&& xmaStates[0].scFast > xmaStates[0].marketMiddleage
|
||||
&& MathAbs(xmaStates[0].scFast - xmaStates[0].marketMiddleage) > (20 * _Point)
|
||||
//
|
||||
&& xmaStates[1].scFast > xmaStates[1].marketMiddleage
|
||||
&& MathAbs(xmaStates[1].scFast - xmaStates[1].marketMiddleage) > (20 * _Point)
|
||||
//
|
||||
&& xmaStates[2].scFast > xmaStates[2].marketMiddleage
|
||||
//
|
||||
&& xmaStates[0].mcFast > xmaStates[0].mcSlow
|
||||
&& MathAbs(xmaStates[0].mcFast - xmaStates[0].mcSlow) > (50 * _Point)
|
||||
//
|
||||
&& xmaStates[0].mcFast < xmaStates[0].scFast
|
||||
&& xmaStates[0].mcFast < xmaStates[0].parabolicSAR
|
||||
//
|
||||
&& xmaStates[0].parabolicSAR < xmaStates[0].marketMiddleage
|
||||
&& xmaStates[1].parabolicSAR < xmaStates[1].marketMiddleage
|
||||
//
|
||||
&& !isSharpBullishHappens
|
||||
//
|
||||
&& longEntryPrice > xmktStates[0].highestLow
|
||||
&& longEntryPrice > xmaStates[0].marketMiddleage
|
||||
//
|
||||
&& xmktStates[0].highestLow > xmaStates[0].scFast
|
||||
&& xmktStates[0].lowestHigh < xmaStates[0].scFast
|
||||
&& xmktStates[0].lowestHigh < xmaStates[0].marketMiddleage
|
||||
;
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
|
||||
```mql4
|
||||
```
|
||||
Reference in New Issue
Block a user