Snake 1

I said last week that the market would mean-revert, go to 1.1610, then 1.157x. This all played out on Friday afternoon.

I don’t use a whole lot of moving averages, and I generally acknowledge the 9-day EMA as the mean (414 HL2 EMA on 30 min), but I do follow another one, the 712 SMA, quasi as my secondary mean.

The market started trending on Thursday, so currently there is an End-Of-Wave sequence being printed. There has been only the first snake ladder, so that means 2 more lower lows for sure, and there has to be another snake ladder to confirm the next lower low before the squirt print on the downside.

Now, I plotted a 15 SMA smoothed on the daily to give a better idea of where the low-risk fade could start.

Although the RSI2 shows an optimal read for a turn, you normally need 4 purple prints on the CounterForce52, so this is early days.

There are high-volume prints to be swept at 1.1565 and 1.1541.

Currently, I would sell anything above the E-44 on the 30-minute.


The San Miguel Castle Show in Tenerife is an excuse to post some Medieval J-Lo, but since no one is going to click on that, here’s some even more creative stuff.

The Way I See It

Now I have 2 examples of accumulation rallies (back-to-back).

Both of them started with a sideways bounce off the 6-sample 20-pip bracket. (Brown Arrow).

A professional number of buys occurred in both valleys before the run-up.

What made the second one more powerful (a double pump of sorts) was that the market experienced a squeeze, receiving an Extra/High energy charge before the next series of waves up.

 voldn[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i))+200*Point; 
 volup[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i))-200*Point;


       if (Low[i+1]<volup[i+1] && Close[i+1]>volup[i+1] && Low[i+4]>volup[i+4] && Low[i+3]>volup[i+3] && Low[i]>volup[i]
       && volup[i]<=volup[i+1] && volup[i+2]<=volup[i+3]
       ){
         ObjectCreate("Svxth"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-10*Point); 
         ObjectSetText("Svxth"+DoubleToStr(i), "Accm+3 humps->R15->30", 23, "Impact", clrGreen);
          ObjectCreate("Svxthh"+DoubleToStr(i), OBJ_TEXT, 0, Time[i+1], Low[i+1]-70*Point); 
         ObjectSetText("Svxthh"+DoubleToStr(i), "Above weekly high->70-ac DBL-DVG+", 23, "Impact", clrGreen);
         
         
       }

What I’m really here to talk about is the exits.

The first exit was a 30-print on the Market Type, but the ultimate exit is what matters here.

There were 3 humps that mattered; the first divergence was auto-plotted, the second I had to draw in myself because I usually don’t look for one over this distance.

#3 was only settled after 3x the 30-minute printing smaller bars were settled. Then it was an “ac” = Above Cut.

So is this a buy now? Not yet. There has not been a sideways bounce off the bracket, and there hasn’t been an R15 prompt.


I have also made a summary of R15 (without an accumulation signal) exit possibilities.

A sustainable rally ends in a parabolic print with a magenta diamond / in a magenta diamond print after 20 hours of no magentas / outside the red bracket, making a new 200H+ print (new high).

Example one: parabolic w/ magenta.

Exit #2: 20 hours of nothing, first magenta print.

The last R-15 sustainable run-up was a bow-back, which made a marginally higher high.

Sure, the conditions are ideal to start an R-15 sustainable run-up, but there hasn’t been a catalyst (a spark, RSI2 spiking below 15), and I personally think that you are going to see a mean reversion next; the mean is around 1.1610 at the moment, but the reversion should take this to 1.157x.

The food for thought part is that at the beginning of a rally you can already know if it’s going to be a sustainable run-up or a spasm, and that different kinds of rallies mean having to be monitoring for different kinds of exits.


This one did surprisingly well for its kind (not popular genre, not upbeat song), and I hope there was more to this than the cover image.

I typed in “Metro Goldwing” as part of the text to be reshuffled by Suno. It refused to do it. I wonder why.

Accumulation Rally

The move above the yellow line should not have happened.

Ever since, there was a smooth keel back to the mean (9-day EMA). Currently, there’s nothing bearish on the chart; as a matter of fact, the daily stochastic seems to be embedded in the overbought.

Now, zooming in on the rally that ensued from there, one thing to notice is the lack of volatility.

In the last blog entry, I left you with the idea of what a sustainable rally needed, which was a spark (quick dip below RSI2-15) during the presence of the right combustible combination.

So coming into this week, I made a semafor monitoring for the 3 ingredients:

You heard it here. Volatility should be looked at first and foremost as “Fuel”. The corresponding meme is Harrison Ford slamming on the fuel gauge in an airplane somewhere in India, repeating the word.


ObjectCreate("Lopez"+43,OBJ_LABEL,1, 0,0);
ObjectSet("Lopez"+43,OBJPROP_CORNER,1);
ObjectSet("Lopez"+43,OBJPROP_XDISTANCE,0);
ObjectSet("Lopez"+43,OBJPROP_YDISTANCE,20);
ObjectSet("Lopez"+43,OBJPROP_COLOR,clrGray);
if (RSI2[ArrayMinimum(RSI2,16,1)]<7) ObjectSet("Lopez"+43,OBJPROP_COLOR,clrGreen);
ObjectSetText("Lopez"+43,"ROOT",24,"Impact");  

ObjectCreate("Lopez"+44,OBJ_LABEL,1, 0,0);
ObjectSet("Lopez"+44,OBJPROP_CORNER,1);
ObjectSet("Lopez"+44,OBJPROP_XDISTANCE,0);
ObjectSet("Lopez"+44,OBJPROP_YDISTANCE,50);
ObjectSet("Lopez"+44,OBJPROP_COLOR,clrGray);
if (voldn[ArrayMaximum(voldn,20,0)]>20 || volup[ArrayMaximum(volup,20,0)]>20) ObjectSet("Lopez"+44,OBJPROP_COLOR,clrGreen); 
ObjectSetText("Lopez"+44,"FUEL",24,"Impact");  

ObjectCreate("Lopez"+42,OBJ_LABEL,1, 0,0);
ObjectSet("Lopez"+42,OBJPROP_CORNER,1);
ObjectSet("Lopez"+42,OBJPROP_XDISTANCE,0);
ObjectSet("Lopez"+42,OBJPROP_YDISTANCE,80);
ObjectSet("Lopez"+42,OBJPROP_COLOR,clrGray);
if (RSI2[ArrayMaximum(RSI2,5,7)]<92) ObjectSet("Lopez"+42,OBJPROP_COLOR,clrGreen);
ObjectSetText("Lopez"+42,"NRAMP",24,"Impact");  



nRamp means “No Ramping,” and the number I decide by is 92 (RSI2[ArrayMaximum(RSI2,5,i+7)]>92).

So I was late to acknowledge the takeoff as the Fuel wasn’t adding up.

I had made a filter for a Ramp & Spark combo, which would accomplish less distance than a sustainable rally (an ABC correction typically capping out in strength, breaching the red line (iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i))+200*Point), but what happened this time is that it stopped right in front of it (white highlight) and reloaded in a form of an accumulation for a run from a higher low after an undercut of the green line (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i))-200*Point).

So the dilemma always comes down to the arbitrary numbers you must pick and divide by and be okay with from here on until something prompts another revision.

The conclusion I have now is that you need 19 or larger print on the Market Type for “sustainability”. We had that (see image #3), but the spark wasn’t on cue. The proper cue was provided by the accumulation (black oval).

The slipknot would suggest more downside, but the next spark would have to be thoroughly examined, as it is likely going to be a continuation buy.


Making up new words and expressions is not something AI is ever going to excel at. AI is not an entity; it should be thought of as a collaboration of people.

[Verse 2]
Stage-a-voo
What the cock-a-doodle
To do?
It's not like I could conduct
A switch-a-roo
I seem to be low on stock
[Bridge]
Is this a silent movie?
I fell flat on my face like
Buster Keaton
While you walked right out like
Mae Marsh


This Prince parody has quotes in it from The Temple of Doom.

Too Far

Actualities first, then a general lesson with working code.

The main thing that I made progress on is adjusting the filters on the R15 RUN / DOOM.

The R15 (spike below RSI2-15 read) has filters for

“finding a root just prior” RSI2[ArrayMinimum(RSI2,16,i+1)]<4.4

“new 32-sample low in the last 16 sample” iLow(symbol,0,iLowest(symbol,0,MODE_LOW,32,i))== iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i))

“lower high” iHighest(symbol,0,MODE_HIGH,16,i)>i+6

“no strong buying in the last 12 candles” RSI2[ArrayMaximum(RSI2,5,i+7)]<92

the “//” markers are defeated filters, no longer being used

I marked up the entry and the exit with orange ovals.


      
     ///RSI2 spike below 15
     if (RSI2[i+1]>RSI2[i+2] 
     && RSI2[i+3]>RSI2[i+2] 
     && RSI2[i+2]<15 
     && RSI2[i+2]>5.4 
     && RSI2[i+1]>15 
     && RSI2[i+3]>15 
    // && RSI2[i+3]<85 
   ///  && RSI2[i+4]>RSI2[i+3]
     && RSI2[ArrayMinimum(RSI2,16,i+1)]<4.4
    // && iHighest(symbol,0,MODE_HIGH,16,i)>i+6
   && RSI2[ArrayMaximum(RSI2,5,i+7)]<92
   && iLow(symbol,0,iLowest(symbol,0,MODE_LOW,32,i))== iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i))
 //  && voldn[ArrayMaximum(voldn,36,i)]>30
     )
     
     { 
          ObjectCreate("Darchelle"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+2], 76);
             ObjectSetText("Darchelle"+DoubleToStr(i), CharToStr(221), 97, "Wingdings", clrMediumSpringGreen);
             ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],90);
            ObjectSetText("SOGZ"+IntegerToString(i),"R15 RUN", 26, "Impact", clrBlue);
           
            
            
              ObjectCreate("SOGY"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],20);
            ObjectSetText("SOGY"+IntegerToString(i),"BWB->2xMag-D", 26, "Impact", clrBlue);
             
             if (Low[ArrayMinimum(RSI2,16,i+1)]>Low[i+2]) {ObjectSetText("Darchelle"+DoubleToStr(i), CharToStr(241), 62, "Wingdings", clrGray);  
             ObjectDelete("SOGY"+IntegerToString(i));
              
              if (RSI2[ArrayMinimum(RSI2,12,i+2)]>6)  ObjectSetText("SOGZ"+IntegerToString(i),"E44 retrace", 26, "Impact", clrBlue);
             else dir[i]=1;
             }
            else dir[i]=1;
            if (voldn[ArrayMaximum(voldn,20,i)]<20 && volup[ArrayMaximum(volup,20,i)]<20){
               ObjectSetText("SOGZ"+IntegerToString(i),"R15 DOOM", 26, "Impact", clrCrimson);
               ObjectSetText("Darchelle"+DoubleToStr(i), CharToStr(242), 62, "Wingdings", clrGray);  
               dir[i]=-1;
             
          }  
      }       
      

Of course, the retracement would not yield a lot of pips, but that’s an exception.

Usually you get a rip for 2 blood diamonds (numbered)

This R15 signal is here to show that with a lot of time provided, I can find anything that can superboost trading.

The following image has an R15 Doom before the R15 RUN.

So in actuality, we have seen the 2 blood diamonds, albeit back to back; I would not be looking for more upside (an 18-hour-long bowback to the swing high that confirms the V top with a shortfall is still possible).


Let’s introduce a new expression, “the market went too far”.

The checklist goes like this:

– V bottom.A greater than 32 print on the Market Type, with the next bar being at least 8 pips shorter.

– R15 run (quick spike below RSI2 15 then a squirt collection for 2 blood diamonds)

– Double divergence with enough momentum loss and a beat – measured by the Market Type indicator; the second divergence’s bar has to fall short of 17 pips.

– Six non-consecutive RSI2 diamonds (not one joint group) plus a beat.

So yeah, half of your questions can be answered by a Market Type Divergences routine.

#property copyright "Copyright © 2026, Macdulio"
#property link "https://forexfore.blog"
#property description "V1.0"
#property description "Market Type Divergences Only"
//#property strict
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 clrRed
#property indicator_color2 clrGreen
#property indicator_level1 20
#property indicator_level2 30
#property indicator_levelcolor clrBlue
#property indicator_levelstyle STYLE_DOT
extern double valuetomonitor = 5.5;
extern int lookback = 100;
extern int indicator_window = 2;
extern int sample = 200;
extern double FSize=32;
double upper[], middle[], lower[];
double volup[], voldn[];
int tup[], tdn[], R6H[],R6L[];
double avg;
double FMax = FSize*6/5;
double iHi4[];
double iLo4[];
int mes[], dir[];
string symbol = Symbol();
double ExtATRBuffer[],ExtATRBuffer2[],ExtATRBuffer3[],ExtATRBuffer4[],ExtATRBuffer5[],stoch60[];
double corr[],corr2[], RSI2[], squeeze[], fifty[];
double frdn[],frup[];
int init(){
SetIndexBuffer(0,voldn);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,6,indicator_color1);
SetIndexBuffer(1,volup);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color2);
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start(){
ArrayResize(ExtATRBuffer, Bars);
ArrayInitialize(ExtATRBuffer, EMPTY_VALUE);
ArrayResize(ExtATRBuffer2, Bars);
ArrayInitialize(ExtATRBuffer2, EMPTY_VALUE);
ArrayResize(ExtATRBuffer3, Bars);
ArrayInitialize(ExtATRBuffer3, EMPTY_VALUE);
ArrayResize(ExtATRBuffer4, Bars);
ArrayInitialize(ExtATRBuffer4, EMPTY_VALUE);
ArrayResize(ExtATRBuffer5, Bars);
ArrayInitialize(ExtATRBuffer5, EMPTY_VALUE);
ArrayResize(iHi4, Bars);
ArrayInitialize(iHi4, EMPTY_VALUE);
ArrayResize(iLo4, Bars);
ArrayInitialize(iLo4, EMPTY_VALUE);
ArrayResize(stoch60, Bars);
ArrayInitialize(stoch60, EMPTY_VALUE);
ArrayResize(RSI2, Bars);
ArrayInitialize(RSI2, EMPTY_VALUE);
ArrayResize(dir, Bars);
ArrayInitialize(dir, 0);
ArrayResize(R6H, Bars);
ArrayInitialize(R6H, 0);
ArrayResize(R6L, Bars);
ArrayInitialize(R6L, 0);
ArrayResize(corr, Bars);
ArrayInitialize(corr, EMPTY_VALUE);
ArrayResize(corr2, Bars);
ArrayInitialize(corr2, EMPTY_VALUE);
ArrayResize(middle, Bars);
ArrayInitialize(middle, EMPTY_VALUE);
ArrayResize(mes, Bars);
ArrayInitialize(mes, 0);
ArrayResize(squeeze, Bars);
ArrayInitialize(squeeze, 0);
ArrayResize(tup, Bars);
ArrayInitialize(tup, 0);
ArrayResize(tdn, Bars);
ArrayInitialize(tdn, 0);
ArrayResize(upper, Bars);
ArrayInitialize(upper, EMPTY_VALUE);
ArrayResize(lower, Bars);
ArrayInitialize(lower, EMPTY_VALUE);
ArrayResize(volup, Bars);
ArrayInitialize(volup, EMPTY_VALUE);
ArrayResize(fifty, Bars);
ArrayInitialize(fifty, EMPTY_VALUE);
ArrayResize(frup, Bars);
ArrayInitialize(frup, EMPTY_VALUE);
ArrayResize(frdn, Bars);
ArrayInitialize(frdn, EMPTY_VALUE);
ArrayResize(voldn, Bars);
ArrayInitialize(voldn, EMPTY_VALUE);
int i;
int RL=0;
int RH=0;
deletetxt1("Darchelle");
for(i=lookback; i>=0; i--){
if (Period()==240) iHi4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_HIGH,i);
else if (Period()==30) iHi4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,i);
else if (Period()==60) iHi4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i);
if (Period()==240) iLo4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_LOW,i);
else if (Period()==30) iLo4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i);
else if (Period()==60) iLo4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i);
stoch60[i]=iStochastic(symbol,60,60,3,3,MODE_SMA,0,MODE_SIGNAL,i);
RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);
if (RSI2[i]>93.6) R6H[i]=1;
if (RSI2[i]<6.4) R6L[i]=1;
fifty[i]=(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,399,i))+iLow(symbol,0,iLowest(symbol,0,MODE_LOW,399,i)))/2;
if (iFractals(symbol,30,MODE_UPPER,i)) frup[i]=High[i];
else frup[i]=frup[i+1];
if (iFractals(symbol,30,MODE_LOWER,i)) frdn[i]=Low[i];
else frdn[i]=frdn[i+1];
volup[i]=NormalizeDouble(MathAbs((Close[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i)))*10000),0);
voldn[i]=NormalizeDouble(MathAbs((iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i))-Close[i])*10000),0);
}
deletetxt1("Pepper");
deletetxt1("Panace");
deletetxt1("PLOT");
for(i=lookback; i>=0; i--){
middle[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_TYPICAL, i);
avg = findAvg(20, i);
upper[i] = middle[i] + avg;
lower[i] = middle[i] - avg;
ExtATRBuffer[i]= -1*(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,sample*2-1,i+1))-Low[i])*-10000;
ExtATRBuffer2[i]=(High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,sample*2-1,i+1)))*10000;
if (Period()==60){
corr[i]=corr[i+1];
corr2[i]=corr2[i+1];
if (ExtATRBuffer4[i+6]!=EMPTY_VALUE) {corr[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-1360*Point; corr2[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-2100*Point;}
if (ExtATRBuffer5[i+6]!=EMPTY_VALUE) {corr[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+1360*Point; corr2[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+2100*Point;}
}
}
deletetxt1("AverD");
int twodigits = NormalizeDouble(RSI2[0],0);
//if (MathAbs(ExtATRBuffer[0])>ExtATRBuffer2[0]) twodigits = NormalizeDouble(MathAbs(ExtATRBuffer[0]),0);
//string tds = IntegerToString(twodigits);
int tens = round(twodigits/10);
int ones = twodigits-tens*10;
string stens, sones;
//Print("tens=",tens);
//Print("ones=",ones);
switch(tens)
{
case 1: stens=CharToStr(140);
break;
case 2: stens=CharToStr(141);
break;
case 3: stens=CharToStr(142);
break;
case 4: stens=CharToStr(143);
break;
case 5: stens=CharToStr(144);
break;
case 6: stens=CharToStr(145);
break;
case 7: stens=CharToStr(146);
break;
case 8: stens=CharToStr(147);
break;
case 9: stens=CharToStr(148);
break;
default: stens=CharToStr(139);
break;
}
//deletetxt1("AverD");
switch(ones)
{
case 1: sones=CharToStr(140);
break;
case 2: sones=CharToStr(141);
break;
case 3: sones=CharToStr(142);
break;
case 4: sones=CharToStr(143);
break;
case 5: sones=CharToStr(144);
break;
case 6: sones=CharToStr(145);
break;
case 7: sones=CharToStr(146);
break;
case 8: sones=CharToStr(147);
break;
case 9: sones=CharToStr(148);
break;
default: sones=CharToStr(139);
break;
}
string jointstring=stens+sones;
ObjectCreate("AverD",OBJ_LABEL,indicator_window, 0,0);
ObjectSet("AverD",OBJPROP_CORNER,3);
ObjectSet("AverD",OBJPROP_XDISTANCE,20);
ObjectSet("AverD",OBJPROP_YDISTANCE,27);
ObjectSetText("AverD",jointstring,40,"Wingdings",DimGray);
if (twodigits>85 || twodigits<15) ObjectSetText("AverD",jointstring,40,"Wingdings",Yellow);
if (twodigits>=94 || twodigits<=6) ObjectSetText("AverD",jointstring,40,"Wingdings",DeepPink);
deletetxt1("Pitus");
deletetxt1("Rocket");
deletetxt1("Banalis");
deletetxt1("Pitus");
deletetxt1("Crush");
deletetxt1("Leap");
deletetxt1("Frog");
deletetxt1("Countess");
deletetxt1("Missing");
deletetxt1("KAROLY");
deletetxt1("SOG");
deletetxt1("Nix");
deletetxt1("Fraca");
int counter = 9;
for(i=lookback; i>=0; i--){
dir[i]=dir[i+1];
////diamond bleed up
if (RSI2[i]>93.6){
ObjectCreate("Darchellen"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 86);
ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrDimGray);
if (RSI2[i]>98) {ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrMagenta);
if (RH>3 && volup[i+1]>16) { if (volup[i+1]>29)
ObjectCreate("PitussY"+IntegerToString(i),OBJ_TREND,1, Time[i], 50, Time[i], 100);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_COLOR, clrPink);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_WIDTH, 10);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_BACK, 1 );
if (dir[i+1]<0) ObjectSet("PitussY"+IntegerToString(i), OBJPROP_COLOR, clrPurple);
}
if (volup[ArrayMaximum(volup,10,i+2)]>volup[i+1]) dir[i]=0;
}
}
////diamond bleed down
if (RSI2[i]<6.4){
ObjectCreate("Darchellen"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 26);
ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrDimGray);
if (RSI2[i]<2) {ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrMagenta);
if (RL>3 && voldn[i+1]>27) { if (voldn[i+1]>30 && i>0 && RSI2[i-1]>2) {dir[i]=1;
ObjectCreate("PitussY"+IntegerToString(i),OBJ_TREND,1, Time[i], 50, Time[i], 0);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_COLOR, clrMagenta);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_WIDTH, 18);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_BACK, 1 );}
}
}
}
/////V bottom
if (i>0 && voldn[i]<=voldn[i+1] &&
voldn[i+2]<voldn[i+1] &&
voldn[i+1]>34
&& (Close[i-1]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i))+200*Point || voldn[i+1]>=voldn[i])
//&& Close[i]>Close[i+1]-50*Point && Close[i-1]>High[i]
&& voldn[ArrayMaximum(voldn,20,i)]==voldn[i+1]
&& Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)
&& Close[i-1]>=Low[i]
){
ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],80);
ObjectSetText("SOGZ"+IntegerToString(i),"V-Bottom", 36, "Impact", clrBlue);
}
/////V top
if (i>0 && volup[i-1]<volup[i] && volup[i]<=volup[i+1] &&
volup[i+2]<volup[i+1] &&
volup[i+1]>34 && ((Close[i]<Close[i+1]-50*Point && Close[i-1]<Low[i]) || Close[i]<High[i]-140*Point) &&
volup[ArrayMaximum(volup,20,i)]==volup[i+1]
&& High[i-1]>iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,5,i-1))-180*Point
&& voldn[i-1]<26
&& voldn[i-1]>15
){
ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],60);
ObjectSetText("SOGZ"+IntegerToString(i),"V/T->3xST", 36, "Impact", clrBlue);
}
///RSI2 spike below 15
if (RSI2[i+1]>RSI2[i+2] && RSI2[i+3]>RSI2[i+2] && RSI2[i+2]<15 && RSI2[i+2]>6.4 && RSI2[i+1]>15 && RSI2[i+3]>15 && RSI2[i+3]<85 && RSI2[i+4]>RSI2[i+3]
&& RSI2[ArrayMinimum(RSI2,16,i+1)]<6.4
// && iHighest(symbol,0,MODE_HIGH,16,i)>i+6
&& RSI2[ArrayMaximum(RSI2,5,i+7)]<90
&& iLow(symbol,0,iLowest(symbol,0,MODE_LOW,48,i))== iLow(symbol,0,iLowest(symbol,0,MODE_LOW,16,i))
// && voldn[ArrayMaximum(voldn,36,i)]>30
)
{
ObjectCreate("Darchelle"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+2], 76);
ObjectSetText("Darchelle"+DoubleToStr(i), CharToStr(221), 97, "Wingdings", clrMediumSpringGreen);
ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],90);
ObjectSetText("SOGZ"+IntegerToString(i),"R15 RUN", 26, "Impact", clrBlue);
if (Low[ArrayMinimum(RSI2,16,i+1)]>Low[i+2]) {ObjectSetText("Darchelle"+DoubleToStr(i), CharToStr(241), 62, "Wingdings", clrGray);
if (RSI2[ArrayMinimum(RSI2,12,i+2)]>6) ObjectSetText("SOGZ"+IntegerToString(i),"E44 retrace", 26, "Impact", clrBlue);
else dir[i]=1;
}
else dir[i]=1;
}
/////red pullback-continuation
if (volup[i]<volup[i+1] && volup[i+2]<volup[i+1] && volup[i+1]>18
&& voldn[ArrayMaximum(voldn,6,i+6)]>30
&& voldn[ArrayMaximum(voldn,8,i+4)]>voldn[i+2] && voldn[ArrayMaximum(voldn,8,i+4)]>voldn[i+3] && voldn[ArrayMaximum(voldn,8,i+4)]>voldn[i+4]
&& voldn[ArrayMaximum(voldn,8,i+4)]>volup[ArrayMaximum(volup,8,i+4)]
&& voldn[ArrayMaximum(voldn,6,i+6)]>volup[i+1] && voldn[i+1]<volup[i+1]){
ObjectCreate("Rocketc"+IntegerToString(i),OBJ_TREND,indicator_window, Time[ArrayMaximum(voldn,6,i+6)],voldn[ArrayMaximum(voldn,6,i+6)],Time[i+1],volup[i+1]);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
ObjectCreate( "Banalisatia"+IntegerToString(i), OBJ_HLINE, 0, Time[0], Close[i+1]);
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_COLOR, clrYellow );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_WIDTH, 4 );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_STYLE, 1 );
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
// ObjectSetText("SOG"+IntegerToString(i),"i-sell 4 Nleg down", 26, "Impact", clrPurple);
}
/////green pullback-continuation
if (voldn[i]<voldn[i+1] && voldn[i+2]<voldn[i+1]
&& volup[i+2]<voldn[i+1]
&& voldn[i]>volup[i]
&& voldn[i+1]>18 && volup[ArrayMaximum(volup,8,i+3)]>30
&& volup[ArrayMaximum(volup,8,i+3)]>volup[ArrayMaximum(volup,8,i+3)-1]
&& volup[ArrayMaximum(volup,8,i+3)]>voldn[i+1] && voldn[i+1]>volup[i+1]){
ObjectCreate("Rocketc"+IntegerToString(i),OBJ_TREND,indicator_window, Time[ArrayMaximum(volup,8,i+3)],volup[ArrayMaximum(volup,8,i+3)],Time[i+1],voldn[i+1]);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Rocketc"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
ObjectCreate( "Banalisatia"+IntegerToString(i), OBJ_HLINE, 0, Time[0], Close[i+1]);
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_COLOR, clrYellow );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_WIDTH, 4 );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisatia"+IntegerToString(i), OBJPROP_STYLE, 1 );
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],65);
//ObjectSetText("SOG"+IntegerToString(i),"i-buy 4 Nleg up", 26, "Impact", clrGreen);
}
/////green to green taper
if (volup[i]<volup[i+1] && volup[i+2]<=volup[i+1] && volup[i+3]<=volup[i+1]
&& volup[ArrayMaximum(volup,26,i+1)]>20
&& volup[i+1]>=voldn[ArrayMaximum(volup,4,i+1)]
&& ((volup[i+1]>9 && RSI2[i+1]>90) || volup[i+1]>=19)
&& volup[i+1]<33
&& volup[ArrayMaximum(volup,26,i+4)]>volup[i+1]
&& volup[ArrayMaximum(volup,12,i+1)]>voldn[ArrayMaximum(voldn,12,i+1)]
&& voldn[i+1]<volup[i+1]
&& High[i+1]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,6,i+1))
){
ObjectCreate("Rocket"+IntegerToString(i),OBJ_TREND,indicator_window, Time[ArrayMaximum(volup,26,i+4)],volup[ArrayMaximum(volup,26,i+4)],Time[i+1],volup[i+1]);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_COLOR,clrMediumSpringGreen);
if (High[ArrayMaximum(volup,26,i+4)]>High[+1]) ObjectSet("Rocket"+IntegerToString(i),OBJPROP_COLOR,clrLimeGreen);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
if (Close[i+1]>iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+1)){
if (i<300) {ObjectCreate("PitusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_COLOR, clrWhite );}
if ((tup[ArrayMaximum(tup,5,i+5)]>0 && tup[ArrayMaximum(tup,10,i+11)]<1 && ((volup[i+1]<14 && RSI2[i+1]>90)
|| RSI2[i+1]>95)) && High[i+1]<High[ArrayMaximum(volup,26,i+4)]
) { ObjectSet("PitusX"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink );
if (i<300){
ObjectCreate( "Banalisation"+IntegerToString(i), OBJ_HLINE, 0, Time[0], High[i+1]+270*Point);
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_WIDTH, 3 );
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectCreate( "Banalisations"+IntegerToString(i), OBJ_HLINE, 0, Time[0], High[i+1]+530*Point);
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_WIDTH, 3 );
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectCreate( "Banalisationz"+IntegerToString(i), OBJ_HLINE, 0, Time[0], High[i+1]+780*Point);
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_WIDTH, 6 );
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_STYLE, 1 );
}
}
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_WIDTH, 4 );
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_BACK, 1 );}
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],75);
// ObjectSetText("SOG"+IntegerToString(i),"Cont/commit: "+DoubleToStr(NormalizeDouble(High[i+1]+40*Point,4),4), 26, "Impact", clrBlack);
if (High[i]>High[i+1]+30*Point) {
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],55);
// ObjectSetText("SOG"+IntegerToString(i),"Brk, buy "+DoubleToStr(NormalizeDouble(High[i+1]-40*Point,4),4)+","+DoubleToStr(NormalizeDouble(High[i+1]-80*Point,4),4), 26, "Impact", clrDarkGreen);
ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
ObjectSetText("SOGZ"+IntegerToString(i),"BUY "+DoubleToStr(NormalizeDouble(High[i+1]-160*Point,4),4), 26, "Impact", clrDarkGreen);
}
tup[i]=1;
}
/////red to red taper
if (voldn[i]<voldn[i+1] && voldn[i+2]<voldn[i+1]
&& voldn[i+3]<voldn[i+1]
// && voldn[ArrayMaximum(voldn,10,i+1)]>25
&& voldn[i+1]>=voldn[ArrayMaximum(voldn,2,i+1)]
&& voldn[i+1]>11 && voldn[i+1]<=33
&& voldn[ArrayMaximum(voldn,19,i+4)]>voldn[i+1]
// && voldn[ArrayMaximum(voldn,8,i+1)]>volup[ArrayMaximum(volup,8,i+1)]
&& voldn[i+1]>volup[i+1]
&& voldn[ArrayMaximum(voldn,8,i+4)]>volup[ArrayMaximum(volup,8,i+4)]
&& Low[i+1]==iLow(symbol,0,iLowest(symbol,0,MODE_LOW,6,i+1))
){
ObjectCreate("Rocket"+IntegerToString(i),OBJ_TREND,indicator_window, Time[ArrayMaximum(voldn,19,i+4)],voldn[ArrayMaximum(voldn,19,i+4)],Time[i+1],voldn[i+1]);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_COLOR,clrDeepPink);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_WIDTH,6);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_BACK,1);
ObjectSet("Rocket"+IntegerToString(i),OBJPROP_RAY_RIGHT,0);
if (Close[i+1]<iMA(symbol,0,16,0,MODE_EMA,PRICE_MEDIAN,i+1)
){
if (i<300){ ObjectCreate("PitusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_COLOR, clrWhite );
}
if (Close[ArrayMaximum(voldn,18,i+4)]<Close[i+1]) {ObjectSet("Rocket"+IntegerToString(i),OBJPROP_COLOR,clrThistle);
ObjectDelete("PitusX"+IntegerToString(i));}
if ((tdn[ArrayMaximum(tdn,5,i+5)]>0 && tdn[ArrayMaximum(tdn,10,i+11)]<1 && voldn[i+1]>15 && RSI2[i]<10) && Low[i+1]>Low[ArrayMaximum(voldn,19,i+4)]) { ObjectSet("PitusX"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink );
if (i<300){
ObjectCreate( "Banalisation"+IntegerToString(i), OBJ_HLINE, 0, Time[0], Low[i+1]-270*Point);
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_WIDTH, 3 );
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisation"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectCreate( "Banalisations"+IntegerToString(i), OBJ_HLINE, 0, Time[0], Low[i+1]-530*Point);
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_WIDTH, 3 );
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisations"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectCreate( "Banalisationz"+IntegerToString(i), OBJ_HLINE, 0, Time[0], Low[i+1]-780*Point);
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_COLOR, clrDeepPink);
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_WIDTH, 6 );
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
ObjectSet("Banalisationz"+IntegerToString(i), OBJPROP_STYLE, 1 );
}
}
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_WIDTH, 4 );
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitusX"+IntegerToString(i), OBJPROP_BACK, 1 );}
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],55);
// ObjectSetText("SOG"+IntegerToString(i),"Cont/commit: "+DoubleToStr(NormalizeDouble(Low[i+1]-40*Point,4),4), 26, "Impact", clrBlack);
if (Low[i]<Low[i+1]-30*Point) {
// ObjectCreate("SOG"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],45);
// ObjectSetText("SOG"+IntegerToString(i),"Brk, sell "+DoubleToStr(NormalizeDouble(Low[i+1]+40*Point,4),4)+","+DoubleToStr(NormalizeDouble(Low[i+1]+80*Point,4),4), 26, "Impact", clrCrimson);
// ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 1, Time[i+1],35);
// ObjectSetText("SOGZ"+IntegerToString(i),"Brk, SELL "+DoubleToStr(NormalizeDouble(Low[i+1]+160*Point,4),4), 26, "Impact", clrCrimson);
}
tdn[i]=1;
}
///windflip down
if (Close[i+2]>fifty[i+2] && Close[i+1]<fifty[i+1] && Close[i]<fifty[i]) {dir[i]=-1;
ObjectCreate("PitussY"+IntegerToString(i),OBJ_TREND,1, Time[i], 50, Time[i], 100);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_COLOR, clrRed);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_WIDTH, 10);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_BACK, 1 );
}
///windflip up
if (Close[i+2]<fifty[i+2] && Close[i+1]>fifty[i+1] && Close[i]>fifty[i]) {dir[i]=1;
ObjectCreate("PitussY"+IntegerToString(i),OBJ_TREND,1, Time[i], 50, Time[i], 0);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_COLOR, clrGreen);
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_WIDTH, 10 );
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_STYLE, 2 );
ObjectSet("PitussY"+IntegerToString(i), OBJPROP_BACK, 1 );
}
}
deletetxt1("Lopez");
ObjectCreate("Lopez"+45,OBJ_LABEL,2, 0,0);
ObjectSet("Lopez"+45,OBJPROP_CORNER,1);
ObjectSet("Lopez"+45,OBJPROP_XDISTANCE,0);
ObjectSet("Lopez"+45,OBJPROP_YDISTANCE,00);
ObjectSet("Lopez"+45,OBJPROP_COLOR,clrGreen);
ObjectSetText("Lopez"+45,"Buy Excess Vol 32+",24,"Impact");
if (ExtATRBuffer[0]>ExtATRBuffer2[0]){
ObjectSet("Lopez"+45,OBJPROP_COLOR,clrDeepPink);
ObjectSetText("Lopez"+45,"Sell Excess Vol 32+",24,"Impact");
}
return(0);
}
void deletetxt1(string text){
for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
string on = ObjectName(iObj);
if(StringFind(on, text) == 0) ObjectDelete(on);
} }
double findAvg(int period, int shift) {
double sum=0;
for (int x=shift;x<(shift+period);x++) {
sum += High[x]-Low[x];
}
sum = sum/period;
return (sum);
}

Useful

In the current tracing market, knowing where the previous weekly POCs were is very useful.

I plot the POCs with a green horizontal.

The other thing is that White Oak can occasionally point out things about the COT data, such as the EUR short holdings were nearing an all-time record, and a cover can happen any time now.


This album is progressive rock, alternative, with humor and creative writing. (Sting, Texas, Alphaville, Cure, and perhaps A-Ha, some latin dance.)

& something from today’s batch:

Arbitrarily

Last week the market started trending, which means a full End-Of-Wave sequence marks the end of a move.

This sequence starts with a failed auction. The trending guarantees a higher high. Then the momentum traders take over (after snake ladder 1), making another higher high, then a squirt is likely to make yet another higher high. This last beat was between 27 and 36 pips on the downside in recent times, while the upside was capping out at 0-6 pips. This one exceeded 9.

The flat top-drop (momentum stall) was countered by a volatility boost (V-bottom).

/////V bottom
if (i>0 && voldn_[i]<=voldn_[i+1] &&
voldn_[i+2]<voldn_[i+1] &&
voldn_[i+1]>34
&& (Close[i-1]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,5,i))+200*Point || voldn_[i+1]>=voldn_[i])
//&& Close[i]>Close[i+1]-50*Point && Close[i-1]>High[i]
&& voldn_[ArrayMaximum(voldn_,20,i)]==voldn_[i+1]
&& Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)
&& Close[i-1]>=Low[i]
){
ObjectCreate("SOGZ"+IntegerToString(i),OBJ_TEXT, 0, Time[i+4],Low[i]);
ObjectSetText("SOGZ"+IntegerToString(i),"V-Bottom", 36, "Impact", clrBlue);
}

I actually always have a reminder on the screen above the Hepa-Titis line to buy a volatility boost.

A 37 print qualified (32+).

From here, it is only possible to push higher after another V-bottom print (and a failed auction up). The likelihood, though, is a full End-of-wave sequence to the downside.

So, cover shorts at a V-bottom print, or after a double divergence that drops below 17 on the Market Type. They bought the latter down at the bottom, the max. undercut was about 14 pips


The 120 Bollinger on the 30-min is crazy useful. Its median is the 120 SMA.

A lot of ending moves get capped by this BB.

As I mentioned, it is a great filter too. When there is a cannibalised auction on the upside, and the 120BB was not exceeded, expect a higher high before the full turn. If it squirted outside, there would be a lower high later.

Snapshot of my 2 screens. I have 3 30-minute charts and one hourly open most of the time.

The upper monitor is HD. That’s actually a disadvantage when on the cell phone (Google Remote Desktop); with a slower connection, the upper half often stays blank.


The market went positive by different indicators:


Yes, I am still trading the way I always have. I want to be in control of when and how I take losses. This is why most months I have no losing trades; I do not close them out. I hedge and bleed and try to become better at figuring out where a turn occurs.

23 trading days, about $442 per day on closed-out trades. Did my equity grow by as much this month as the balance? No. Last month? Yes. By the same token, I could have a month with a negative balance and positive equity gains, which is what matters ultimately: gaining rope against the broker. Balance is the potential money the broker can claim from you. Equity is yours to take out from.


As for the music stuff, I may have walked into a trap on X; there are these database-collector prompts like: “Say something about Donald Trump in 2 words”. How do you call someone who always lies?

My answers were for those two: mothafckn massmurderer and DJT. Just try to not answer, especially if you live in the US, as you may end up being put on an Elon Musk exclusion list, which is there to make your life impossible by cutting the possibility to make money with music, for instance. Unfortunately, even when these schucks are no longer in power, these decisions will not be automatically reversed. Yes, YouTube Music has such a list with names and emails.

How Many Lives Does US Foreign Aid Save?

I have made my first and only withdrawal from Distrokid. $217 translated to £138 at my end.

It brings back memories of dial-up Christian-filtered internet and me trying to look for the lyrics of The Pussycat Dolls’ These Boots.

Ask me if I have made a song with these lyrics: These boobs were made for stalking and that’s what you will do, one of these days they’re gonna bounce all over you.

CornSilk

One of the stupid color names in MQL4.

I received this question the other day: With so many EAs, how do you decide which one to use in your trading?

My answer was: Most important is to specialize, not try to do something for every timeframe and every instrument. The second thing is to pay attention to what is currently working. RSI2 signals are not going to go out of style. The rest is never-ending filtering and trying to calibrate.

So yeah, I’ve been working on short entry and exit plots lately, and it is getting complex for sure. For one, the box isn’t always above the high.


///70+6
if (((i>1 && RSI2[i]>69 && RSI2[i+1]<60 && RSI2[i+2]<50 && RSI2[i-1]<40 && RSI2[i-2]<40
   && (RSI2[ArrayMaximum(RSI2,4,i+4)]>66 || RSI2[i+1]<30)) ||    
  (i>1 && RSI2[i+1]>69 && RSI2[i+3]<7 && RSI2[i-1]<30 ))
  && RSI2[ArrayMaximum(RSI2,4,i+4)]<99
){      

   if ((RSI2[i+1]<30 || RSI2[i+3]<30 || RSI2[i+3]>94) && RSI2[i-1]<30)
     ObjectCreate("RayRectx"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i)) , Time[i+10], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i))+60*Point);
   else ObjectCreate("RayRectx"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i-1], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i))-0*Point , Time[i+5], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i))-60*Point);      
         ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_COLOR,clrCornsilk);
         ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_WIDTH,3);
        ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_BACK,1);
        ObjectCreate("PatusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
      ObjectSet("PatusX"+IntegerToString(i), OBJPROP_COLOR, clrPowderBlue);
        ObjectSet("PatusX"+IntegerToString(i),OBJPROP_WIDTH,6);
      ObjectSet("PatusX"+IntegerToString(i),OBJPROP_BACK,1);
      ObjectDelete("Sixt"+IntegerToString(i+3));
      ObjectDelete("Sixte"+IntegerToString(i+3));
      ObjectDelete("Sixt"+IntegerToString(i+4));
      ObjectDelete("Sixte"+IntegerToString(i+4));
       ObjectDelete("Sixt"+IntegerToString(i+5));
      ObjectDelete("Sixte"+IntegerToString(i+5));
       ObjectDelete("Sixt"+IntegerToString(i+6));
      ObjectDelete("Sixte"+IntegerToString(i+6));
      ObjectDelete("Sixt"+IntegerToString(i+2));
      ObjectDelete("Sixte"+IntegerToString(i+2));
      ObjectDelete("Sixt"+IntegerToString(i+1));
      ObjectDelete("Sixte"+IntegerToString(i+1));
            ObjectCreate("Sixt"+IntegerToString(i), OBJ_TEXT, 1, Time[i+4], 52); 
      ObjectSetText("Sixt"+IntegerToString(i), "Yellow Box sell", 23, "Impact", clrBlue); 
       ObjectCreate("Sixte"+IntegerToString(i), OBJ_TEXT, 1, Time[i+4], 103); 
       ObjectSetText("Sixte"+IntegerToString(i), "to 2/3 Purple Diamonds", 23, "Impact", clrPurple);
        
        }

For the next step, I had to widen the conditions acceptable for blood diamonds (purple ones). So I decided to include those RSI2 lows that come with considerable volatility expansion, meaning 5 pips outside the 120BB.

////diamond down
if (RSI2[i]<8.3){
ObjectCreate("Darchellen"+DoubleToStr(i), OBJ_TEXT, 1, Time[i], 26);
ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrDimGray);
if (RSI2[i]<2 || (Low[i]<iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i)-50*Point
&& Low[i+1]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)-60*Point)) {ObjectSetText("Darchellen"+DoubleToStr(i), CharToStr(117), 21, "Wingdings", clrPurple);
}
}

The urgency was about the behaviour on Friday.

Yes, that thing is missing another blood diamond.


My second Textas song:

The 3rd French album fell under the censorship with the batch. I made timecode inserts in the description to be able to position freely.

Why is it a big deal that I cannot post to the Topic and all other music services? Since there was no money in it, the wider potential audience does not count for much. It’s the specialized, catalogue-like nature that will be missed, the dedicated surface. Whatever is there will remain there, but I cannot add to it. The number of views, the daily growth, the total number of tracks, the quick tab browsing – these are the things I have lost as well as a great deal of motivation.

Unhooking

Be the king of unhooking. Not bad advice.

One thing I noticed about the unhooking (black Arrows on RSI2) on the upside is that the 120BB works as a filter to decide whether there’s gonna be a higher high.

///CANNIBAL auction up
if ((RSI2[i]<92.5 && RSI2[i+1]>92.5 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>92.5 && RSI2[i+6]>92.5 && RSI2[i+7]>92.5 && RSI2[i+8]>92.5)
|| (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>98 && RSI2[i+3]>98 && RSI2[i+4]>98 && RSI2[i+6]<92 && i>0 && RSI2[i-1]<40)
|| (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>98)
){
ObjectDelete("RayRect"+IntegerToString(i));
ObjectDelete("RayRecta"+IntegerToString(i));
ObjectDelete("RayRectb"+IntegerToString(i));
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i], 100, Time[i+10], 70);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,1);
ObjectCreate("Sixt"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+4], 50);
ObjectSetText("Sixt"+DoubleToStr(i), "AcUc 4D sell", 23, "Impact", clrBlue);
if (High[i+1]>iBands(symbol,0,120,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)){
ObjectCreate("Sixte"+DoubleToStr(i), OBJ_TEXT, 1, Time[i+4], 70);
ObjectSetText("Sixte"+DoubleToStr(i), "v3 200H-Uhuc or", 23, "Impact", clrPurple);
ObjectSetText("Sixt"+DoubleToStr(i), "v2 (E44,R66,4D)", 23, "Impact", clrPurple);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrMagenta);
}
else { ObjectCreate("RayRectx"+IntegerToString(i),OBJ_RECTANGLE,0, Time[i], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i)) , Time[i+10], iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i))+50*Point);
ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_COLOR,clrPurple);
ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRectx"+IntegerToString(i),OBJPROP_BACK,1);
}
if (i>0 && RSI2[i-1]>30){
ObjectCreate("PatusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
ObjectSet("PatusX"+IntegerToString(i), OBJPROP_COLOR, clrPink);
ObjectSet("PatusX"+IntegerToString(i),OBJPROP_WIDTH,8);
ObjectSet("PatusX"+IntegerToString(i),OBJPROP_BACK,1);}
}

Once the unhooking has occurred (vertical line), a vector program gets selected. V2 is a medium-steep descent capping out in the 4th diamond print, and it has re-entry at RSI2-66 and could see a bounce at E44 if that’s the first thing it hits.

V3 goes outside the 200-Hour bracket. Uh=unhook, uc=undercut – meaning even the unhook is gonna be superseded thanks to the inertia/momentum.


I hate all surveys; I think of them as an attempt to waste some of your life. Yet, here’s one I would not mind getting an answer to.

When Distrokid blacklisted me (supposedly over YouTube’s request), I had 3 albums jammed for good. Not sure what finally short-circuited my musical ambitions, but here are some possible song quotes.

I have violated the freedom of speech; this much is clear.

But was it because of Musk? For attacking billionaires? For being anti-Trump? For being labelled anti-American?

Amin, give me some Ketamine.

“Chancing Life”

Extinct mollusks.
Tusks..
husks... musks.

“The Enemy Is Us”

We have met the enemy, and it is us
We have voted for demolition, destruction
Self-imposed detention and now failing
At water retention
Who could have seen this coming?
That the nation of discrimination and alienation
May become the annihilation-nation?!
(How was the last war?
It bombed!)
Not a drop of mercy, not a grain of sense
How many trigger fingers do you see?
Mad Max burns for oil again
Acid is falling from the sky.
Vertical disintegration
Invasion-nation,
Contracting viruses,
Extracting dystopia.
(I have an idea...
How about the tallest tree,
Partner?!)
Nobody is going to survive
Abort the rescue mission
Be AWOL or be killed in action

“Bribes And Let Dies”

Keen on keeping things green?
Nice choice of color
For that reflecting pool
Out of control pricks and dicks
Grabbed all the power
Pushed the better part of civilization
To the brink of destruction
Starvation, extinction
Hoarding wealth and killing everyone else
The worst of all walks of life
"Bribes and let dies"
Nothing was left for us, darling
But two plastic bags
This is a house of fog and sand
And this is how it ends

“If You Can Break”

I have walked through the wrong door
And found amorphous anthropics
Plus, maybe some orthopedics
Tapping into the psychedelics...
Right there, in the middle of the shroom
I'd better put on some exoskeleton
And leave the reptilian room

This broke my enthusiasm, and probably would end up capping out at 5000 songs in my life instead of 10k.

[Chorus]
If you can break, you can thrive.
If you have never been dead
It's hard to say if you're alive

Dumbstruck 4D Chess

Where are we at?

I believe there are two, maybe 3 more lower lows that are missing.

As a reminder, the End-Of-Wave sequence (a symptom of a healthy, trending market) is made up of a failed auction, two snake ladders, and some squirt (not always present).

Next up, a comparison of two end-of-wave sequences, where the squirt was a shortfall, and so was the peak before the second ladder.

With this kind of End-Of-Wave sequence, it is the hardest to put on adequate volume for the reversal, as there is no higher high getting made, and scaling in does not have a defined, narrow range.

Earlier example:

Now, compared to this previous example that I had, where the breakout also went parabolic (way outside the 120BB), the second high was capped by the 120 BB itself (second blue oval), and there was one squirt. The tiny twist on the current one is that the squirt wasn’t coming from next to the E44, but much earlier, and it did manage to beat the first lower high. About the 70+6 4D chess later.

While on the upside, I’m trying to count 3 waves up – i.e.:

Every black candle was a close of a leg up.

On the downside, I am looking for 4 RSI2 extreme dips and a slight undercut of the 4th. 4D stands for 4 diamonds.

70+6 means 70+ for an RSI2 peak, the 6 is up to 6 pips of a beat, the low risk entry (yellow square) that sets off a low-extremes counter.


Bonus material: some of the dumbstruck markers=unhookings (vertical lines).



///Unhooking upside  
  if (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>98 && RSI2[i+3]>92.5 && High[i+1]>iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)
  && RSI2[i+5]>60 && RSI2[i+6]<80
 // && MFI14[i]>76
  ) 
  {
      ObjectCreate("PatusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
      ObjectSet("PatusX"+IntegerToString(i), OBJPROP_COLOR, clrSalmon);
        ObjectSet("PatusX"+IntegerToString(i),OBJPROP_WIDTH,6);
      ObjectSet("PatusX"+IntegerToString(i),OBJPROP_BACK,1);
  }
  ///Unhooking down  
  if (RSI2[i]>15 && RSI2[i+1]<2 && RSI2[i+2]<2 
  //&& RSI2[i+3]<7.5 
  && (RSI2[i+4]<2 || RSI2[i+4]>7.5) 
  && Low[i+1]<iMA(symbol,0,414,0,MODE_EMA,PRICE_MEDIAN,i+1)) 
  {
      ObjectCreate("PatusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
      ObjectSet("PatusX"+IntegerToString(i), OBJPROP_COLOR, clrCadetBlue);
        ObjectSet("PatusX"+IntegerToString(i),OBJPROP_WIDTH,6);
      ObjectSet("PatusX"+IntegerToString(i),OBJPROP_BACK,1);
  }

During the inside waves and when there is no commitment (no trend), the 4D is not the number of the deep dips, but the actual 30 minutes spent deeply oversold, meaning the actual diamonds.

Also, I have added a filter to the upside commitment; the RSI2 should not reach below 30 in the next 2 prints (RSI2[i-1]>30) – rather counterintuitive.

///failed auction up
if (RSI2[i]<92.5 && RSI2[i+1]>92.5 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>92.5){
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i], 100, Time[i+6], 70);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrBlue);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,0);
if (MFI14[i+1]>80 && MFI14[i+2]>80 && MFI14[i+3]>80 ) {ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrOrangeRed); ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,1);}
if (i>1 && (RSI2[i]<30 || RSI2[i-1]<30)) {
ObjectCreate("RayRecta"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i-1], 100, Time[i+1], 20);
ObjectSet("RayRecta"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
ObjectSet("RayRecta"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRecta"+IntegerToString(i),OBJPROP_BACK,1);
ObjectCreate("RayRectb"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i-2], RSI2[ArrayMinimum(RSI2,3,i-2)], Time[i+4], 0);
ObjectSet("RayRectb"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSet("RayRectb"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRectb"+IntegerToString(i),OBJPROP_BACK,1);
}
}
///CANNIBAL auction up
if ((RSI2[i]<92.5 && RSI2[i+1]>92.5 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>92.5 && RSI2[i+6]>92.5 && RSI2[i+7]>92.5 && RSI2[i+8]>92.5)
|| (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>98 && RSI2[i+3]>98 && RSI2[i+4]>98 && RSI2[i+6]<92 && i>0 && RSI2[i-1]<40)
|| (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>98)
){
ObjectDelete("RayRect"+IntegerToString(i));
ObjectDelete("RayRecta"+IntegerToString(i));
ObjectDelete("RayRectb"+IntegerToString(i));
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i], 100, Time[i+10], 70);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,1);
if (i>0 && RSI2[i-1]>30){
ObjectCreate("PatusX"+IntegerToString(i),OBJ_VLINE,0, Time[i+1], 0);
ObjectSet("PatusX"+IntegerToString(i), OBJPROP_COLOR, clrPink);
ObjectSet("PatusX"+IntegerToString(i),OBJPROP_WIDTH,8);
ObjectSet("PatusX"+IntegerToString(i),OBJPROP_BACK,1);}
}

3000-View special.

A remark here is that a song’s quality is never objective. I used to listen to a song every day, Eric Lemon’s remix of a Dave Gahan presentation. I don’t recall ever having issues with the quality.

Recently, I came across it again. I had to check if the song was re-uploaded with a slower bitrate. It was poor. Most of my songs have way better quality than this.

Conclusion: things that you like get a quality upgrade from your mind.


What an IQ test?

When I was young, this was making the rounds. It was attributed to Einstein.
Sit down and measure your time. I’ll tell you how long I took next week.

TEST

There are 5 houses, each with a different color.
There is one tenant in each, and they all have different nationalities.
They all consume different kinds of liquids, smoke different kinds of cigarettes, and have different pets.

  1. The Brit lives in the red house.
  2. The Swede has a dog.
  3. The Danish person drinks tea.
  4. The green house is on the left of the white house.
  5. The tenant of the green house drinks coffee.
  6. The person who smokes Pall Mall has a bird.
  7. The tenant of the yellow house smokes Dunhill.
  8. The tenant in the middle house drinks milk.
  9. The Norwegian lives in the first house.
  10. The person who smokes Blend keeps a cat.
  11. The person who has a horse lives next to the Dunhill smoker.
  12. The person who smokes Blue Master is a beer drinker.
  13. The German smokes Prince.
  14. The Norwegian lives next to the blue house.
  15. The Blend smoker lives next to the person who drinks water.

Question: Which person has a pet fish?


I made 2 new Spandaul Ballet-like songs recently, boosting the collection to 5.

Unexplored Attributes

I mention calibration at times. Here it is in practice.

You know that I named a five-diamond sequence a failed auction (for now). But I need to weed out some that do not qualify.

For instance, one or two blood diamonds at the end of the sequence are normal. But what if there were 4 in a row?

/CANNIBAL auction up
if ((RSI2[i]<92.5 && RSI2[i+1]>92.5 && RSI2[i+2]>92.5 && RSI2[i+3]>92.5 && RSI2[i+4]>92.5 && RSI2[i+5]>92.5 && RSI2[i+6]>92.5 && RSI2[i+7]>92.5 && RSI2[i+8]>92.5)
|| (RSI2[i]<85 && RSI2[i+1]>98 && RSI2[i+2]>98 && RSI2[i+3]>98 && RSI2[i+4]>98)
){
ObjectDelete("RayRect"+IntegerToString(i));
ObjectDelete("RayRecta"+IntegerToString(i));
ObjectDelete("RayRectb"+IntegerToString(i));
ObjectCreate("RayRect"+IntegerToString(i),OBJ_RECTANGLE,1, Time[i], 100, Time[i+10], 70);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_WIDTH,3);
ObjectSet("RayRect"+IntegerToString(i),OBJPROP_BACK,1);
}

As the evidence shows, that’s the end of a move, not the start of a trend. Weeding it out by adding the second row to an existing filter.


Regarding an End-Of-Wave sequence, I’d like to propose considering some additional meaning/functions of the main events.

A failed ailuction is 5 to 7 diamonds long, and has to arrive on cue – meaning after a squirt in the other direction.

Now, what if we started looking at this event as a commitment to the new direction?

Until a week ago, if you asked me what a trending market was, I probably would have said that market that is being kept out at the 44 EMA. A strong trend at the 16EMA (all 30 minutes), and an extra strong at the 8 EMA. Yeah, I’m no longer liking that approach. A market that manages to print a failed auction without cannibalising it is a trending market. Most markets, therefore, are healthy, trending markets. The current time is a summer doldrum in the Eur/Usd, not healthy.

There is not enough new money coming in; therefore, you don’t get Failed Auction prints, which are accommodating moves by market makers, giving an open-ended fill, yielding to the new money, the more volume king.

I guess next week I’m gonna talk about the E44-E120 zone for a filter. I started typing this up, but I can’t be bothered now to make the plot.

Things are not obvious from the outset, just because now you have some idea of the components.

For instance, the squirt phase? Does it always happen or can it be waived?

A binary question that raises more questions. Is there a hint, a telltale that can be used reliably?

My current idea, based on the following move up, is that the squirt gets called off if the market manages to close back beyond the E-44 to E-120 hot tub.

Similarly, a pronounced spike beyond this zone may suggest that the squirt would fall shorter than a backtest.

I don’t currently think that a new end-of-wave sequence can be initiated (fresh snake count) with a new failed auction in the same direction that the market has been heading.

The point is that there is working knowledge to be built around these little caveats.

One remark about volume:

When the Medallion fund said that they were not taking any outside money, because then they would be moving the market, what they said was: we figured out how to move the market with the current money that we have, thank you very much. In fact, our problem is keeping the focus of attention off of it. And yes, there may be an algorithm, and it could involve a filter of a number of days of consecutive selling (Markov), but the sensitive part would be the volume necessary, and dosing it right, so that it does not pop out. The Midas touch. Hiring a lot of PHD’s was a sleight of hand.

The pteridophyte doesn’t rustle if the wind isn’t blowing it (Hungarian folk wisdom).

Rodolfo* used to say: watch my hand, because I’m cheating.


I now have 7 trackss above 1k views. Salt and Pepa is gonna be the 8th soon.

Something new?

& below is Dave Gahan making the Basildon accent world famous.


*: Rodolfo was a Hungarian magician with amazing sleight of hand. He used to smuggle in things from behind the Iron Curtain that he put into the customs agent’s pockets for the duration of a search, and then took them back.