/***************************************
Solar Wind Joy Translated from MT4 to Amibroker
Done by KelvinHand
****************************************/
Version(4.90);
period = Param("Period",35, 1);
smooth = Param("Smooth",10, 1);
MaxHHV = HHV(H, period);
MinLLV = LLV(L, period);
Value1=0;
Fish1=0;
aFish=Null;
for(i=0; i<BarCount; i++)
{
MaxH = MaxHHV[i];
MinL = MinLLV[i];
Price = (H[i]+L[i])/2;
Value = 0.33*2*((Price-MinL)/(MaxH-MinL)-0.5)+0.67*Value1;
Value = Min(Max(Value, -0.999), 0.999);
aFish[i] = 0.5*log((1+Value)/(1-Value))+0.5*Fish1;
Value1 = Value;
Fish1 = aFish[i];
if (aFish[i]>0)
aFish[i]=10;
else
aFish[i]=-10;
}
aSmth=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aFish[i-k];
}
if (SumW>0)
aSmth[i] = SumI/SumW;
}
aLine=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aSmth[i-k];
}
if (SumW>0)
aLine[i] = SumI/SumW;
}
colorH = IIf(aLine>0, colorBrightGreen, IIf(aLine<0, colorRed, colorGold));
Plot(aLine, "", colorH, stylenolabel|styleHistogram);
colorL = IIf(aLine>0 AND Ref(aLine, -1)>0, colorBrightGreen, IIf(aLine<0 AND Ref(aLine, -1) <0, colorRed, colorGold));
Plot(aLine, "", colorL, stylenolabel|stylethick);
PlotGrid(0, colorLightgrey, 6, 1, True);
/***************************************
Solar Wind Joy Translated from MT4 to Amibroker
Done by KelvinHand
****************************************/
Version(4.90);
period = Param("Period",35, 1);
smooth = Param("Smooth",10, 1);
MaxHHV = HHV(H, period);
MinLLV = LLV(L, period);
Value1=0;
Fish1=0;
aFish=Null;
for(i=0; i<BarCount; i++)
{
MaxH = MaxHHV[i];
MinL = MinLLV[i];
Price = (H[i]+L[i])/2;
Value = 0.33*2*((Price-MinL)/(MaxH-MinL)-0.5)+0.67*Value1;
Value = Min(Max(Value, -0.999), 0.999);
aFish[i] = 0.5*log((1+Value)/(1-Value))+0.5*Fish1;
Value1 = Value;
Fish1 = aFish[i];
if (aFish[i]>0)
aFish[i]=10;
else
aFish[i]=-10;
}
aSmth=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aFish[i-k];
}
if (SumW>0)
aSmth[i] = SumI/SumW;
}
aLine=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aSmth[i-k];
}
if (SumW>0)
aLine[i] = SumI/SumW;
}
colorH = IIf(aLine>0, colorBrightGreen, IIf(aLine<0, colorRed, colorGold));
Plot(aLine, "", colorH, stylenolabel|styleHistogram);
colorL = IIf(aLine>0 AND Ref(aLine, -1)>0, colorBrightGreen, IIf(aLine<0 AND Ref(aLine, -1) <0, colorRed, colorGold));
Plot(aLine, "", colorL, stylenolabel|stylethick);
PlotGrid(0, colorLightgrey, 6, 1, True);
/***************************************
Solar Wind Joy Translated from MT4 to Amibroker
Done by KelvinHand
****************************************/
Version(4.90);
period = Param("Period",35, 1);
smooth = Param("Smooth",10, 1);
MaxHHV = HHV(H, period);
MinLLV = LLV(L, period);
Value1=0;
Fish1=0;
aFish=Null;
for(i=0; i<BarCount; i++)
{
MaxH = MaxHHV[i];
MinL = MinLLV[i];
Price = (H[i]+L[i])/2;
Value = 0.33*2*((Price-MinL)/(MaxH-MinL)-0.5)+0.67*Value1;
Value = Min(Max(Value, -0.999), 0.999);
aFish[i] = 0.5*log((1+Value)/(1-Value))+0.5*Fish1;
Value1 = Value;
Fish1 = aFish[i];
if (aFish[i]>0)
aFish[i]=10;
else
aFish[i]=-10;
}
aSmth=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aFish[i-k];
}
if (SumW>0)
aSmth[i] = SumI/SumW;
}
aLine=0;
for(i=0; i<BarCount; i++)
{
SumI=0;
SumW=0;
for(k=0; k<smooth && (i-k)>=0; k++)
{
weight = smooth-k;
SumW += weight;
SumI += weight*aSmth[i-k];
}
if (SumW>0)
aLine[i] = SumI/SumW;
}
colorH = IIf(aLine>0, colorBrightGreen, IIf(aLine<0, colorRed, colorGold));
Plot(aLine, "", colorH, stylenolabel|styleHistogram);
colorL = IIf(aLine>0 AND Ref(aLine, -1)>0, colorBrightGreen, IIf(aLine<0 AND Ref(aLine, -1) <0, colorRed, colorGold));
Plot(aLine, "", colorL, stylenolabel|stylethick);
PlotGrid(0, colorLightgrey, 6, 1, True);
/***************************************
Solar Wind Joy Translated from MT4 to Amibroker
heavily modified by trash to significantly improve speed of original code by KelvinHand
origins from http://www.traderji.com/amibroker/98121-convert-solar-wind-joy-mt4-indicator-afl-2.html
****************************************/
Version( 5.90 );
period = Param( "Period", 35, 1 );
smooth = Param( "Smoothing period", 10, 1 );
//---- mod by trash start
// using AMA2 -> huge speed up by using array instead of loop
function aFishFunc( period ) {
MaxH = HHV( H, period );
MinL = LLV( L, period );
midbar = ( H + L ) / 2;
array1 = 2 * ( ( midbar - MinL ) / ( MaxH - MinL + 1e-30 ) - 0.5 );
Value = AMA2( array1, 0.33, 0.67 );
Value = Min( Max( Value, -0.999 ), 0.999 );
array2 = log( ( 1 + Value ) / ( 1 - Value ) );
aFish = AMA2( array2, 0.5, 0.5 );
return IIf( aFish > 0, 10, -10 );
}
function VarSum( per ) {
result = per;
for( i = 1; i < per; i++ )
result += per - i;
return result;
}
// two times used average calculation put to function
function cAverage( array, period ) {
bi = BarIndex();
if( Status( "action" ) == actionIndicator ) {
startbar = Max( period, FirstVisibleValue( bi ) - period );
endbar = LastVisibleValue( bi );
} else {
startbar = period;
endbar = BarCount - 1;
}
//
result = Null;
for( i = startbar; i <= endbar; i++ ) {
SumI = 0;
for( k = 0; k < period; k++ ) {
weight = period - k;
SumI += weight * array[i - k];
}
result[i] = SumI;
}
return result / VarSum( period );
}
aFish = aFishFunc( period );
aLine = cAverage( cAverage( aFish, smooth ), smooth );
// --- mod by trash end
colorH = IIf( aLine > 0, colorBrightGreen,
IIf( aLine < 0, colorRed, colorGold ) );
Plot( aLine, "", colorH, stylenolabel | styleHistogram, Null, Null, 0, 0, -30 );
colorL = IIf( /*mod by trash*/Sum(aLine > 0, 2) == 2, colorBrightGreen,
IIf( /*mod by trash*/Sum(aLine < 0, 2) == 2, colorRed, colorGold ) );
Plot( aLine, "", colorL, stylenolabel | stylethick );
PlotGrid( 0, colorLightgrey, 6, 1, True );
Title = StrFormat( "{{NAME}} - {{INTERVAL}} - Solar Wind Joy: " +
EncodeColor( SelectedValue( ColorL ) ) + "%g", aline );
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
S | prev metastock convert to afl | AmiBroker | 0 | |
G | Need Help with converting this Pinescript to AFL | AmiBroker | 1 | |
M | convert to AFL | AmiBroker | 0 | |
S | Need help in converting Pine Script to AFL | General Trading & Investing Chat | 0 | |
S | Convert Simple Thinkscript Support/Resistance Lines into AFL | AmiBroker | 4 |