Forex Tester 2 Registration Keygen Torrent Forex ...

My home-made bar replay for MT4

I made a home-made bar replay for MT4 as an alternative to the tradingview bar replay. You can change timeframes and use objects easily. It just uses vertical lines to block the future candles. Then it adjusts the vertical lines when you change zoom or time frames to keep the "future" bars hidden.
I am not a professional coder so this is not as robust as something like Soft4fx or Forex Tester. But for me it gets the job done and is very convenient. Maybe you will find some benefit from it.

Here are the steps to use it:
1) copy the text from the code block
2) go to MT4 terminal and open Meta Editor (click icon or press F4)
3) go to File -> New -> Expert Advisor
4) put in a title and click Next, Next, Finish
5) Delete all text from new file and paste in text from code block
6) go back to MT4
7) Bring up Navigator (Ctrl+N if it's not already up)
8) go to expert advisors section and find what you titled it
9) open up a chart of the symbol you want to test
10) add the EA to this chart
11) specify colors and start time in inputs then press OK
12) use "S" key on your keyboard to advance 1 bar of current time frame
13) use tool bar buttons to change zoom and time frames, do objects, etc.
14) don't turn on auto scroll. if you do by accident, press "S" to return to simulation time.
15) click "buy" and "sell" buttons (white text, top center) to generate entry, TP and SL lines to track your trade
16) to cancel or close a trade, press "close order" then click the white entry line
17) drag and drop TP/SL lines to modify RR
18) click "End" to delete all objects and remove simulation from chart
19) to change simulation time, click "End", then add the simulator EA to your chart with a new start time
20) When you click "End", your own objects will be deleted too, so make sure you are done with them
21) keep track of your own trade results manually
22) use Tools-> History center to download new data if you need it. the simulator won't work on time frames if you don't have historical data going back that far, but it will work on time frames that you have the data for. If you have data but its not appearing, you might also need to increase max bars in chart in Tools->Options->Charts.
23) don't look at status bar if you are moused over hidden candles, or to avoid this you can hide the status bar.


Here is the code block.
//+------------------------------------------------------------------+ //| Bar Replay V2.mq4 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #define VK_A 0x41 #define VK_S 0x53 #define VK_X 0x58 #define VK_Z 0x5A #define VK_V 0x56 #define VK_C 0x43 #define VK_W 0x57 #define VK_E 0x45 double balance; string balance_as_string; int filehandle; int trade_ticket = 1; string objectname; string entry_line_name; string tp_line_name; string sl_line_name; string one_R_line_name; double distance; double entry_price; double tp_price; double sl_price; double one_R; double TP_distance; double gain_in_R; string direction; bool balance_file_exist; double new_balance; double sl_distance; string trade_number; double risk; double reward; string RR_string; int is_tp_or_sl_line=0; int click_to_cancel=0; input color foreground_color = clrWhite; input color background_color = clrBlack; input color bear_candle_color = clrRed; input color bull_candle_color = clrSpringGreen; input color current_price_line_color = clrGray; input string start_time = "2020.10.27 12:00"; input int vertical_margin = 100; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Comment(""); ChartNavigate(0,CHART_BEGIN,0); BlankChart(); ChartSetInteger(0,CHART_SHIFT,true); ChartSetInteger(0,CHART_FOREGROUND,false); ChartSetInteger(0,CHART_AUTOSCROLL,false); ChartSetInteger(0,CHART_SCALEFIX,false); ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,true); if (ObjectFind(0,"First OnInit")<0){ CreateStorageHLine("First OnInit",1);} if (ObjectFind(0,"Simulation Time")<0){ CreateTestVLine("Simulation Time",StringToTime(start_time));} string vlinename; for (int i=0; i<=1000000; i++){ vlinename="VLine"+IntegerToString(i); ObjectDelete(vlinename); } HideBars(SimulationBarTime(),0); //HideBar(SimulationBarTime()); UnBlankChart(); LabelCreate("New Buy Button","Buy",0,38,foreground_color); LabelCreate("New Sell Button","Sell",0,41,foreground_color); LabelCreate("Cancel Order","Close Order",0,44,foreground_color); LabelCreate("Risk To Reward","RR",0,52,foreground_color); LabelCreate("End","End",0,35,foreground_color); ObjectMove(0,"First OnInit",0,0,0); //--- create timer EventSetTimer(60); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if (id==CHARTEVENT_CHART_CHANGE){ int chartscale = ChartGetInteger(0,CHART_SCALE,0); int lastchartscale = ObjectGetDouble(0,"Last Chart Scale",OBJPROP_PRICE,0); if (chartscale!=lastchartscale){ int chartscale = ChartGetInteger(0,CHART_SCALE,0); ObjectMove(0,"Last Chart Scale",0,0,chartscale); OnInit(); }} if (id==CHARTEVENT_KEYDOWN){ if (lparam==VK_S){ IncreaseSimulationTime(); UnHideBar(SimulationPosition()); NavigateToSimulationPosition(); CreateHLine(0,"Current Price",Close[SimulationPosition()+1],current_price_line_color,1,0,true,false,false,"price"); SetChartMinMax(); }} if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="New Sell Button") { distance = iATR(_Symbol,_Period,20,SimulationPosition()+1)/2; objectname = "Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1],foreground_color,2,5,false,true,true,"Sell"); objectname = "TP for Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1]-distance*2,clrAqua,2,5,false,true,true,"TP"); objectname = "SL for Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1]+distance,clrRed,2,5,false,true,true,"SL"); trade_ticket+=1; } } if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="New Buy Button") { distance = iATR(_Symbol,_Period,20,SimulationPosition()+1)/2; objectname = "Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1],foreground_color,2,5,false,true,true,"Buy"); objectname = "TP for Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1]+distance*2,clrAqua,2,5,false,true,true,"TP"); objectname = "SL for Trade # "+IntegerToString(trade_ticket); CreateHLine(0,objectname,Close[SimulationPosition()+1]-distance,clrRed,2,5,false,true,true,"SL"); trade_ticket+=1; } } if(id==CHARTEVENT_OBJECT_DRAG) { if(StringFind(sparam,"TP",0)==0) { is_tp_or_sl_line=1; } if(StringFind(sparam,"SL",0)==0) { is_tp_or_sl_line=1; } Comment(is_tp_or_sl_line); if(is_tp_or_sl_line==1) { trade_number = StringSubstr(sparam,7,9); entry_line_name = trade_number; tp_line_name = "TP for "+entry_line_name; sl_line_name = "SL for "+entry_line_name; entry_price = ObjectGetDouble(0,entry_line_name,OBJPROP_PRICE,0); tp_price = ObjectGetDouble(0,tp_line_name,OBJPROP_PRICE,0); sl_price = ObjectGetDouble(0,sl_line_name,OBJPROP_PRICE,0); sl_distance = MathAbs(entry_price-sl_price); TP_distance = MathAbs(entry_price-tp_price); reward = TP_distance/sl_distance; RR_string = "RR = 1 : "+DoubleToString(reward,2); ObjectSetString(0,"Risk To Reward",OBJPROP_TEXT,RR_string); is_tp_or_sl_line=0; } } if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam=="Cancel Order") { click_to_cancel=1; Comment("please click the entry line of the order you wish to cancel."); } } if(id==CHARTEVENT_OBJECT_CLICK) { if(sparam!="Cancel Order") { if(click_to_cancel==1) { if(ObjectGetInteger(0,sparam,OBJPROP_TYPE,0)==OBJ_HLINE) { entry_line_name = sparam; tp_line_name = "TP for "+sparam; sl_line_name = "SL for "+sparam; ObjectDelete(0,entry_line_name); ObjectDelete(0,tp_line_name); ObjectDelete(0,sl_line_name); click_to_cancel=0; ObjectSetString(0,"Risk To Reward",OBJPROP_TEXT,"RR"); } } } } if (id==CHARTEVENT_OBJECT_CLICK){ if (sparam=="End"){ ObjectsDeleteAll(0,-1,-1); ExpertRemove(); }} } //+------------------------------------------------------------------+ void CreateStorageHLine(string name, double value){ ObjectDelete(name); ObjectCreate(0,name,OBJ_HLINE,0,0,value); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_COLOR,clrNONE); ObjectSetInteger(0,name,OBJPROP_BACK,true); ObjectSetInteger(0,name,OBJPROP_ZORDER,0); } void CreateTestHLine(string name, double value){ ObjectDelete(name); ObjectCreate(0,name,OBJ_HLINE,0,0,value); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_COLOR,clrWhite); ObjectSetInteger(0,name,OBJPROP_BACK,true); ObjectSetInteger(0,name,OBJPROP_ZORDER,0); } bool IsFirstOnInit(){ bool bbb=false; if (ObjectGetDouble(0,"First OnInit",OBJPROP_PRICE,0)==1){return true;} return bbb; } void CreateTestVLine(string name, datetime timevalue){ ObjectDelete(name); ObjectCreate(0,name,OBJ_VLINE,0,timevalue,0); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_COLOR,clrNONE); ObjectSetInteger(0,name,OBJPROP_BACK,false); ObjectSetInteger(0,name,OBJPROP_ZORDER,3); } datetime SimulationTime(){ return ObjectGetInteger(0,"Simulation Time",OBJPROP_TIME,0); } int SimulationPosition(){ return iBarShift(_Symbol,_Period,SimulationTime(),false); } datetime SimulationBarTime(){ return Time[SimulationPosition()]; } void IncreaseSimulationTime(){ ObjectMove(0,"Simulation Time",0,Time[SimulationPosition()-1],0); } void NavigateToSimulationPosition(){ ChartNavigate(0,CHART_END,-1*SimulationPosition()+15); } void NotifyNotEnoughHistoricalData(){ BlankChart(); Comment("Sorry, but there is not enough historical data to load this time frame."+"\n"+ "Please load more historical data or use a higher time frame. Thank you :)");} void UnHideBar(int barindex){ ObjectDelete(0,"VLine"+IntegerToString(barindex+1)); } void BlankChart(){ ChartSetInteger(0,CHART_COLOR_FOREGROUND,clrNONE); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,clrNONE); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,clrNONE); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,clrNONE); ChartSetInteger(0,CHART_COLOR_CHART_UP,clrNONE); ChartSetInteger(0,CHART_COLOR_CHART_LINE,clrNONE); ChartSetInteger(0,CHART_COLOR_GRID,clrNONE); ChartSetInteger(0,CHART_COLOR_ASK,clrNONE); ChartSetInteger(0,CHART_COLOR_BID,clrNONE);} void UnBlankChart(){ ChartSetInteger(0,CHART_COLOR_FOREGROUND,foreground_color); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,bear_candle_color); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,bull_candle_color); ChartSetInteger(0,CHART_COLOR_BACKGROUND,background_color); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,foreground_color); ChartSetInteger(0,CHART_COLOR_CHART_UP,foreground_color); ChartSetInteger(0,CHART_COLOR_CHART_LINE,foreground_color); ChartSetInteger(0,CHART_COLOR_GRID,clrNONE); ChartSetInteger(0,CHART_COLOR_ASK,clrNONE); ChartSetInteger(0,CHART_COLOR_BID,clrNONE);} void HideBars(datetime starttime, int shift){ int startbarindex = iBarShift(_Symbol,_Period,starttime,false); ChartNavigate(0,CHART_BEGIN,0); if (Time[WindowFirstVisibleBar()]>SimulationTime()){NotifyNotEnoughHistoricalData();} if (Time[WindowFirstVisibleBar()]=0; i--){ vlinename="VLine"+IntegerToString(i); ObjectCreate(0,vlinename,OBJ_VLINE,0,Time[i],0); ObjectSetInteger(0,vlinename,OBJPROP_COLOR,background_color); ObjectSetInteger(0,vlinename,OBJPROP_BACK,false); ObjectSetInteger(0,vlinename,OBJPROP_WIDTH,vlinewidth); ObjectSetInteger(0,vlinename,OBJPROP_ZORDER,10); ObjectSetInteger(0,vlinename,OBJPROP_FILL,true); ObjectSetInteger(0,vlinename,OBJPROP_STYLE,STYLE_SOLID); ObjectSetInteger(0,vlinename,OBJPROP_SELECTED,false); ObjectSetInteger(0,vlinename,OBJPROP_SELECTABLE,false); } NavigateToSimulationPosition(); SetChartMinMax();} }//end of HideBars function void SetChartMinMax(){ int firstbar = WindowFirstVisibleBar(); int lastbar = SimulationPosition(); int lastbarwhenscrolled = WindowFirstVisibleBar()-WindowBarsPerChart(); if (lastbarwhenscrolled>lastbar){lastbar=lastbarwhenscrolled;} double highest = High[iHighest(_Symbol,_Period,MODE_HIGH,firstbar-lastbar,lastbar)]; double lowest = Low[iLowest(_Symbol,_Period,MODE_LOW,firstbar-lastbar,lastbar)]; ChartSetInteger(0,CHART_SCALEFIX,true); ChartSetDouble(0,CHART_FIXED_MAX,highest+vertical_margin*_Point); ChartSetDouble(0,CHART_FIXED_MIN,lowest-vertical_margin*_Point); } void LabelCreate(string labelname, string labeltext, int row, int column, color labelcolor){ int ylocation = row*18; int xlocation = column*10; ObjectCreate(0,labelname,OBJ_LABEL,0,0,0); ObjectSetString(0,labelname,OBJPROP_TEXT,labeltext); ObjectSetInteger(0,labelname,OBJPROP_COLOR,labelcolor); ObjectSetInteger(0,labelname,OBJPROP_FONTSIZE,10); ObjectSetInteger(0,labelname,OBJPROP_ZORDER,10); ObjectSetInteger(0,labelname,OBJPROP_BACK,false); ObjectSetInteger(0,labelname,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,labelname,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER); ObjectSetInteger(0,labelname,OBJPROP_XDISTANCE,xlocation); ObjectSetInteger(0,labelname,OBJPROP_YDISTANCE,ylocation);} double GetHLinePrice(string name){ return ObjectGetDouble(0,name,OBJPROP_PRICE,0); } void CreateHLine(int chartid, string objectnamey, double objectprice, color linecolor, int width, int zorder, bool back, bool selected, bool selectable, string descriptionn) { ObjectDelete(chartid,objectnamey); ObjectCreate(chartid,objectnamey,OBJ_HLINE,0,0,objectprice); ObjectSetString(chartid,objectnamey,OBJPROP_TEXT,objectprice); ObjectSetInteger(chartid,objectnamey,OBJPROP_COLOR,linecolor); ObjectSetInteger(chartid,objectnamey,OBJPROP_WIDTH,width); ObjectSetInteger(chartid,objectnamey,OBJPROP_ZORDER,zorder); ObjectSetInteger(chartid,objectnamey,OBJPROP_BACK,back); ObjectSetInteger(chartid,objectnamey,OBJPROP_SELECTED,selected); ObjectSetInteger(chartid,objectnamey,OBJPROP_SELECTABLE,selectable); ObjectSetString(0,objectnamey,OBJPROP_TEXT,descriptionn); } //end of code 
submitted by Learning_2 to Forex [link] [comments]

Auto-trading fun with Bollinger bands [Novice level].

Whilst we have a fair few 'novice' posts about TA and Global Macro (aka "Fundamentals"), there aren't too many involving auto-trading. Seeing as I'm in the middle of teaching myself MQL4, I thought I'd throw this out there as discussion prompter.
By "novice", I mean someone who has moved beyond complete beginner ("what's a FOMC and a NFP?") but still not deploying robust and market ready strategies ("how does market structure affect news event response?"), so constructive criticism, informed commentary or taking the ideas and developing them further are very much the point of sharing in the first place. It's not meant to be a showcase of code, because the code is a mess!
This post got me thinking about how relatively trivial it would be to implement a Bollinger Band mean reversion autotrader.
Project Goals
My interest in the project was as a way to begin development of a skeleton EA that would use a custom indicator to implement trade signals. The point of this would be to allow for faster prototyping of visually based autotrading before taking it to the testing environment. The key advantage of this is that you can see on your charts which entries are being missed, something that is much more laborious to do via visual mode in the strategy tester.
Concept Development
So to begin the project, I sketched out the concept.
One way to trade Bollinger Bands is to trade the reversion to the mean. Intuitively, we expect that wider deviations from the mean will result in more reliable reversions to the mean. To explore this we could enter when price breaches the second SD band and then returns back inside it.
Here's the default Bollinger Band on default settings in MT4, demonstrating this sort of behaviour:
http://i.imgur.com/dK2oDO7.png
Prototyping
I want to use the indicator, and not the EA, to generate trade signals, as this is the point of the project for me. Because I'm lazy and grew up coding in basements, I opt to fiddle with the default indicator code rather than build up from scratch.
My first goal is to add two things.
Firstly, I want to add another layer of bands, because I saw a set up like that a while ago and liked it. (This is not a very good reason, and I think it costs me down the track).
Secondly, I want to add in a way to visually indicate the trade signals before we pass them to the EA.
Adding another set of bands is just a copy and paste of the existing bands. My learning point here is that I need to adjust the amount of buffers to match the number of bands I want. This comes into play for adding the trade signal arrows, as they need to go in the same sort of structure as the second lot of bands.
[I know from reading about the project goals in advance that EAs access custom indicators via iCustom(). This function can only receive the contents of one of the first 8 indicator buffers. Thus the idea will be that the buffer that marks out the trade entries on the indicator will later be used by the EA to mark out where entries should be. It's possible this is not the best way for EAs to access custom indicators , so input from more experienced coders is welcome!]
#property indicator_chart_window #property indicator_buffers 8 // <---- have to set this to match your copy and pasted buffer amount #property indicator_color1 LightSeaGreen #property indicator_color2 LightSeaGreen #property indicator_color3 LightSeaGreen // hack in (make 'em colourful. Turns out I didn't understand how the numbering worked, and indictator_color4 is never visualised) #property indicator_color4 clrWhite #property indicator_color5 clrWhite #property indicator_color6 clrRed #property indicator_color7 clrGreen #property indicator_color8 clrRed //--- indicator parameters input int InpBandsPeriod=50; // Bands Period input int InpBandsShift=0; // Bands Shift input double InpBandsInnerDeviations=1.0; // Add in for our other Band input double InpBandsOuterDeviations=2.0; // Bands Deviations //--- buffers double ExtMovingBuffer[]; double ExtUpperBuffer[]; double ExtLowerBuffer[]; double ExtStdDevBuffer[]; // hack in buffers (these buffers will store our trade signals) double SellSignalBuffer[]; double BuySignalBuffer[]; // these buffers will hold the additional bands. apologies for the naming, I didn't originally intend to share this double ExtUpperUpperBuffer[]; double ExtLowerLowerBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit(void) { //--- 1 additional buffer used for counting. IndicatorBuffers(8); // don't forget to adjust this to account for the new buffers IndicatorDigits(Digits); //--- middle line SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMovingBuffer); SetIndexShift(0,InpBandsShift); SetIndexLabel(0,"Bands SMA"); //--- upper band SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtUpperBuffer); SetIndexShift(1,InpBandsShift); SetIndexLabel(1,"Bands Upper"); //--- lower band SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,ExtLowerBuffer); SetIndexShift(2,InpBandsShift); SetIndexLabel(2,"Bands Lower"); SetIndexBuffer(3,ExtStdDevBuffer); //--- Copy and paste from above, and just change the number! Upper outer band is INDEX 4 SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,ExtUpperUpperBuffer); SetIndexShift(4,InpBandsShift); SetIndexLabel(4,"Bands Outer Upper"); //--- Copy& paste, lower outer band is INDEX 5 SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,ExtLowerLowerBuffer); SetIndexShift(5,InpBandsShift); SetIndexLabel(5,"Bands Outer Lower"); //--- remind myself which is which so I don't forget later: sell signal is INDEX 6!!!! SetIndexStyle(6,DRAW_ARROW); SetIndexArrow(6,218); SetIndexBuffer(6,SellSignalBuffer); SetIndexShift(6,InpBandsShift); SetIndexLabel(6,"Sell Signal"); //--- buy signal is INDEX 7 !!! SetIndexStyle(7,DRAW_ARROW); SetIndexArrow(7,217); SetIndexBuffer(7,BuySignalBuffer); SetIndexShift(7,InpBandsShift); SetIndexLabel(7,"Buy Signal"); //--- check for input parameter if(InpBandsPeriod<=0) { Print("Wrong input parameter Bands Period=",InpBandsPeriod); return(INIT_FAILED); } //--- SetIndexDrawBegin(0,InpBandsPeriod+InpBandsShift); SetIndexDrawBegin(1,InpBandsPeriod+InpBandsShift); SetIndexDrawBegin(2,InpBandsPeriod+InpBandsShift); // hack in our additional buffers, so they also start at the corect point SetIndexDrawBegin(4,InpBandsPeriod+InpBandsShift); SetIndexDrawBegin(5,InpBandsPeriod+InpBandsShift); SetIndexDrawBegin(6,InpBandsPeriod+InpBandsShift); SetIndexDrawBegin(7,InpBandsPeriod+InpBandsShift); //--- initialization done return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Bollinger Bands | //+------------------------------------------------------------------+ // all of this code is from the default indicator int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i,pos; //--- if(rates_total<=InpBandsPeriod || InpBandsPeriod<=0) { return(0); } //--- counting from 0 to rates_total ArraySetAsSeries(ExtMovingBuffer,false); ArraySetAsSeries(ExtUpperBuffer,false); ArraySetAsSeries(ExtLowerBuffer,false); ArraySetAsSeries(ExtStdDevBuffer,false); // hack in to make sure our custom buffers run in the same direction ArraySetAsSeries(SellSignalBuffer,false); ArraySetAsSeries(ExtUpperUpperBuffer,false); ArraySetAsSeries(ExtLowerLowerBuffer,false); ArraySetAsSeries(BuySignalBuffer,false); ArraySetAsSeries(close,false); ArraySetAsSeries(high,false); ArraySetAsSeries(low,false); //--- initial zero if(prev_calculated<1) { for(i=0; i1) pos=prev_calculated-1; else pos=0; //--- main cycle for(i=pos; i After a bit of tweaking typos, the indicator now displays two sets of bands, one at 1x SD and one at 2xSD from the mean (moving average). It also has two buffers that will use the DRAW_ARROW style to mark out potential trades.
Adding trade logic
I still can't decide if it's better to isolate the logic code in the Custom Indicator or the EA, in the long run. There seem to be performative, stylistic and redundancy issues, but for the moment the project is to put the logic in the Indicator, so that's what I did.
The fastest way to prototype this idea seems to be identifying when price closes outside of the far band.
This is trivial to achieve. We compare the close to the two outer bands, and if it's outside them, then we set the relevant trade signal buffer.
//
 double tempclose = close[i]; if(tempclose>(ExtUpperUpperBuffer[i]+10*Point)) { SellSignalBuffer[i] = high[i]+(20* Point); } else { SellSignalBuffer[i] = 0; } if(tempclose<(ExtLowerLowerBuffer[i]-10*Point)) { BuySignalBuffer[i] = low[i]-(20*Point); } else { BuySignalBuffer[i]=0; } } 
It works!
http://i.imgur.com/Ak3UkkK.png
Green arrows successfully mark out possible sell entries where price closes above the top band, and red arrows mark out possible buy entries when price closes below the lower band.
The logic can be a lot more complicated than this obviously, but the point of my project is to develop the iCustom technique, rather than make a good autotrader.
Now it's time to switch to the EA.
part two to follow
submitted by alotmorealots to Forex [link] [comments]

Vibrant Money System Review 2015 - Is Vibrant Money System SCAM? Vibrant Money System By Travis Stephenson

Vibrant Money System Review 2015 - Find out the Facts about Vibrant Money System in this Vibrant Money System review! So Exactly what is Vibrant Money System Software all about? Does Vibrant Money System Actually Work? Is Vibrant Money System Software scam or does it really work?
To discover answers to these concerns continue reading my in depth and truthful Vibrant Money System Review below.
Vibrant Money System Description:
Name: Vibrant Money System
About: Making Money Online
Vibrant Money System Exclusive Discount Link!! CLICK HERE NOW!!!
What is Vibrant Money System?
The Vibrant Money System is a very effective way to make quick cash online harnessing the power of the internet
Who Does Not Want To Earn money Quick?
Everyone wants to make money fast. I'm uncertain exactly what took place, however in this age of high speed internet access and instant online everything, everybody is looking for a way to generate income fast too. And why not? Who would not wish to make money fast anyway? So long as no one gets hurt, there's absolutely nothing incorrect with making a quick dollar. Simply make sure that when you're trying to find a way to earn money quick you do not become the target for someone else trying to make money quick. The virtually universal desire to make money fast has actually produced a huge market to be easily exploited by any individual with a little imaginative savvy. I see numerous make money fast schemes exploding across the web, it kind of scares me a little. I need to wonder at their appeal; is that an indicator of their desperation, or is it a measure of their success? Picturing thousands of people throughout the world providing their charge card numbers and falling victim to these little tricks makes me sort of unfortunate. A few of my favorite generate income quick schemes turn up on the tv at unusual hours of the night. These are absolutely nothing except funny. My preferred is that guy who's selling 'The best Vitamin on the planet'. That individual is the funniest guy I've ever seen, and represents everything you want to stay clear of when trying to earn money fast. An excellent general guideline to bear in mind when browsing through different 'earn money quick' concepts you see online or on TELEVISION; if it sounds too good to be real, it is. You cannot generate income quick without knowing the best ways to do something well, taking some dangers, and yes, doing some work. Any make money quick offer you see that does not require any work, ability, or run the risk of on your part is more than likely a scam, and need to be approached with a high degree of criticism. I'm not going to suggest any ways to make money quick, since if I understood any I 'd be out there doing it today instead of composing this. My idea of a way to make money fast is to go to medical school, so what the heck do I understand about quick money. 11 years of education, training, and a life time of debt isn't truly a great way to generate income quick, however 11 years is just a blink of an eye with respect to the age of deep space.
The New Vibrant Money Systems By Travis Stephenson
The Vibrant Money System The Keys To The best ways to Generate income There are many people who believe they do not know the best ways to earn money. Anyone can earn money once they put their mind and energies towards accomplishing that objective. What concealed skills are lying within you that will allow you to earn money?
Ways in Which You Might Generate income
=> Secret <=
It seems that some people just have a propensity at making money. You might believe that there is a trick that they have that you don't have. The only belongings they have that you don't is the guts to take a danger. Not just that, people who are earning money and lots of it are not terrified of a little hard work and sacrifice in order to achieve their ambitions. The only thing holding you back from discovering the best ways to make money is yourself. Everyone who wishes to learn ways to generate income can easily doing this. There are a myriad of ways in which you can learn how to earn money. There is the trading of commodities and stocks if that is something you seemed to have some sort of success with, and naturally everyone understands ways to earn money by working at a routine task. For many people that suggests working for someone else and waiting for a paycheck at the end of the week. Aren't you prepared to break out of that mold and take your fate into your very own hands? You might think of starting your very own company as a way you can be one who understands how to earn money. You can have a company that will display any special talents or capabilities you may have, you can try your hand at a service that is based upon the web or a wide range of other methods that will offer you the financial freedom you have long been dreaming about.
Should I Pay for Details that Will Teach Me Ways to Make Money?
With all the details that you can discover on the internet, you may not find it necessary to spend even a single cent on finding out how to make money. You might discover all the resources required to start up your own business right from the convenience of your easy chair using just your laptop and your stamina. Those who are predestined to end up being successful are patient and don't let problems or mistakes knock them off track for obtaining their objectives. If you invest a percentage of time researching on the internet, it might pay off in spades when you discover the best opportunity you can earn money with and live a life you so highly be worthy of. Bear in mind, the only thing preventing you from ending up being a success is the desire to take a danger for what you want.
Vibrant Money System Summary
In summary, there are some obvious concepts that have actually been checked over time, in addition to some more recent techniques. that you may not have considered. Hopefully, as long as you follow exactly what we recommend in this post you can either get started with using the Vibrant Money System.
Click Here! Vibrant Money System Discount!!
How To Claim Your Exclusive Discount?
Click Here!!
Watch The Short Video Till The End
Than The Special Discount Coupon Will Be Automatically Be Activated!
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tags: Vibrant Money System app, Vibrant Money System information, Vibrant Money System url, Vibrant Money System website, Vibrant Money System trading software, get Vibrant Money System, article about Vibrant Money System, Vibrant Money System computer program Vibrant Money System support, Vibrant Money System support email address, Vibrant Money System help desk, similar than Vibrant Money System, better than Vibrant Money System, Vibrant Money System contact, Vibrant Money System demo, Vibrant Money System video tutorial, how does Vibrant Money System work, is Vibrant Money System the best online is Vibrant Money System a scam, does Vibrant Money System really work, does Vibrant Money System actually work, Vibrant Money System members area,Vibrant Money System by steven, Vibrant Money System login page, Vibrant Money System verification, Vibrant Money System software reviews, Vibrant Money System no fake review, is Vibrant Money System real, Vibrant Money System forex trading, Vibrant Money System binary options trading, Vibrant Money System automated app, the Vibrant Money System review, Vibrant Money System signals, Vibrant Money System mac os x, Vibrant Money System broker sign up, Vibrant Money System free download, reviews of Vibrant Money System, Vibrant Money System bonus, Vibrant Money System honest review, Vibrant Money System 2015, is Vibrant Money System worth the risk, Vibrant Money System pc desktop, Vibrant Money System free trial, Vibrant Money System testimonial, Vibrant Money System warrior forum, Vibrant Money System web version, Vibrant Money System open a account, Vibrant Money System laptop, Vibrant Money System revised Method 2015, Vibrant Money System discount, Vibrant Money System youtube, seriously will Vibrant Money System work, Vibrant Money System facebook, Vibrant Money System activation code, Vibrant Money System 2015 Working, Vibrant Money System twitter, Vibrant Money System currency trading, Vibrant Money System example trade, will Vibrant Money System work on mobile phone, Completely New Vibrant Money System, new Vibrant Money System, Vibrant Money System Real Review, Vibrant Money System webinar, will Vibrant Money System help me, real truth about Vibrant Money System, Vibrant Money System System, Vibrant Money System inside members page, how to download Vibrant Money System, how to access Vibrant Money System, Vibrant Money System Robot, how to use Vibrant Money System, how to trade with Vibrant Money System, Vibrant Money System today, Vibrant Money System feedback, vibrantmoneysystems.com review, vibrantmoneysystems.com reviews, Vibrant Money Systems By Travis Stephenson, Vibrant Money System review By Travis Stephenson, Vibrant Money Systems Review, Free Video No Website Needed 588.95 A Day System, Vibrant Money System real user review, Vibrant Money System customer reviews, Vibrant Money System consumer review, Vibrant Money System Review 2015 Vibrant Money System doesn't work, is Vibrant Money System another scam or legit, Vibrant Money System refund, Activate Vibrant Money System, review of Vibrant Money System, Vibrant Money System test, Vibrant Money System explanation, what is Vibrant Money System, Vibrant Money System news, new version of Vibrant Money System, Vibrant Money System fan Page, Vibrant Money System breaking news, should i use Vibrant Money System, Vibrant Money System yes or no, do i need trading experience, Vibrant Money System create account, Vibrant Money System instructions, Vibrant Money System Secret method, Join Vibrant Money System, Vibrant Money System ea trading app, Vibrant Money System limited time, Vibrant Money System pros and cons, Vibrant Money System bad reviews, Vibrant Money System negative and positive review, Vibrant Money System Author, Vibrant Money System creator, who made Vibrant Money System, what is the Vibrant Money System, Vibrant Money System real review, Vibrant Money System strategy, Vibrant Money System password reset, Vibrant Money System beta tester, Vibrant Money System comparison, Vibrant Money System questions and answers, Vibrant Money System results, Vibrant Money System winning and losing trades, Vibrant Money System overview, Vibrant Money System training, how to setup Vibrant Money System, start trading with Vibrant Money System, Vibrant Money System proof, Vibrant Money System the truth, Get Vibrant Money System, Vibrant Money System Review
Click Here Access The New Vibrant Money System Right NOW!
submitted by AlexisWroff to VibrantMoneySystem [link] [comments]

Backtesting Softwares: Forex Tester 3 vs Soft4Fx Simulator ... Test Drive Unlimited 2 Download link + Serial key (2020 ... forex EA generator fxgen ea builder tutorial - YouTube Forex Tester 2: Cómo Activarlo - Solicitar Clave de ... Como instalar Forex Tester 1 Full (Crack) - YouTube Serial Key Generator v1.0 - YouTube Forex Tester 2 - How to register program - YouTube

Download Forex Tester v.2 Full Cracked Programs Latest Version For Pc And Mac - Download Cracked Programs Download Full Cracked Programs, license key, serial key, keygen, activator, cracks, softwares for PC/Mac, activation, patches. Forex tester 2 key torrent Automated options trading x3 reunion. Forex, Depending on how much trade forex without attachments an Easy binary options trading using paypal binary options in Binary Binary options trading risks strategy. Return binary options broker. Best Trading stock options 101 pdf download bbinary torrent. India which options trading strategies keep tester. Many downloads like Forex Tester 2.2 may also include a crack, serial number, unlock code, cd key or keygen (key generator). If this is the case it is usually found in the full download archive itself. Welcome To FileFixation.com. FileFixation.com is a new file sharing web service which gives you access to literally hundreds of thousands of direct downloads including software, games, movies ... Forex Tester is a software that simulates trading in the forex market. ... codes, key generator, pirate key, keymaker or keygen for Forex Tester 2.8.4 . ... Artical forex tester v2.9 cracked rar Folks involved in forex should be mindful and watchful.. Forex Tester 2 Serial Keygen kraak reeksnommer sleutel aktivering .... Forex Tester 2.8.4 Keygen. rar, Terry Da Weegskaal-Dont Give Up ... To improve search results for Forex Tester 2.9.6 try to exclude using words such as: serial, code, keygen, hacked, patch, warez, etc. Simplifying your search query should return more download results. Many downloads like Forex Tester 2.9.6 may also include a crack, serial number, unlock code or keygen (key generator). If this is the case then ... Key Generator Forex Tester 2 Freeware RSA Key Generator v.New RSA Key Generator was developed as an accessible, and very handy piece of software that lets you generate RSA keys. Key Generator Forex Tester 2 Software Forex Tester v.3.0.0.22 Forex Tester 3 - backtesting software that allows to speed up your learning on Forex by 2000 times. Hardware Inspector 4.4.2 key code generator: Tmpg Enc Xpress 4.4.2.238 serial keys gen: Wondershare-hd-video-converter 4.4.2 patch: Speed Up My Pc 2009 4.0.0.4.2 serial key gen: Uniblue Speedupmypc 2010 4.2.7.4 serial keygen: Cdburnerxp 4.2.4.1420 serial maker: Real Hide Ip 4.0.4.2 keymaker: Emco Msi Package Builder Starter 4.4.2 key generator Programs like Forex tester 2 key generator promises zero efforts on the part of traders and still ensure better profits. Here’s an example! Take a moment to think if that is indeed possible. Imagine a situation in which you are trading with one of the most fluctuating currency pairs, EUR/USD. You already know the condition that might affect the relative prices of these currencies. Say you ... Forex Tester 2 Strategies could be a skilled code machine of the interchange Market. It permits you to achieve and improve commerce skills while not risking your cash. you are doing not have to be compelled to train in real time, watching for days and weeks to check your commerce ideas and techniques, Forex Tester 2 Strategies can pack this point in hours and minutes.This is a superb Forex ...

[index] [1441] [3686] [26730] [20631] [26597] [9634] [14189] [20893] [3710] [425]

Backtesting Softwares: Forex Tester 3 vs Soft4Fx Simulator ...

Download: http://gestyy.com/wBpyb5 Facebook: https://www.facebook.com/kiduxofficial Website: http://kiduxdevelopment.wordpress.com Contact: [email protected] Hello guys .. Grab the working serial key and the download link for the game below. Download link for Game : http://gestyy.com/w951gr Serial Keys : (Try ente... Hola amigos mi nombre es Alex Ruiz, Suscribete a mi canal - https://goo.gl/a1Ka1S Asi podras recibir mis videos en el Acto!! En este vídeo les muestro como... Explanation of registration process In this Warsaw Forex trading vlog, I give my personal opinion on Forex Tester 3 vs Soft4Fx Simulator. Those are two backtesting software Forex traders can us... http://www.21tradingcoach.com Para descargar la aplicación de clic en el siguiente enlace: http://www.21tradingcoach.com/simuladores-de-mercado/ En este víde... forex Ea generator, fxgen ea builder tutorial, create simple mt4 expert advisor tutorial from moving average cross over.

https://binary-optiontrade.anmusetreds.ml