How to create 70 tick chart with FT3 - Forex Tester 4 Forum

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]

Forward testing historical data.

I finally got windows on my Mac, and now I discover that forex tester 3 doesn't operate on a virtual machine. Is there any other software or anything that will allow me to forward test historical data
submitted by tollsworth 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]

XE TRADER Sept.2015 REVIEW | A Scam Review? | Under The Bonnet Investigation

I personally don’t have time or money to waste on anything that smells like a scammy product or service. That’s why in early September when this product first flashed across my screen, I was compelled to investigate. “What the……. is this?” was my initial response. This might sound harsh, however, if you, the consumer are looking for shortcuts to earn and learn how to get rich overnight using Binary Option Trading as your vehicle, you really need to ask yourself the hard questions before incinerating money on products that promise quick riches. Now, fast forward to today, my comments are still emphatic, however once you read this article and review my findings you will be surprised. Throughout this article we will identifying and asking the hard questions one should ponder before purchasing any type of Auto or Semi-Auto-Trader based software. Please read and pay special attention to this article, by the end you will be educated enough to decide whether or not this product is worth investing your time and money in.
 
WARNING: If you are a new or an existing Binary Options trader, you must be well aware that 90% of people trading Binary Options lose their money. To avoid black holes one should train their minds to acquire a tool set that will not only assist you identifying daily trades, but also provides you the the ability to read the markets, simplifying trend analysis and most importantly educating oneself to trade effectively. Don’t fall into the trap of receiving signals and resorting to blind trading, i.e. roll the dice, cross your fingers and hope for the best.
 
Q1. In a competitive market, what is the purpose and point of difference with XE Trader? Answer: As a trader you have a collection of tools you use to trade, to illustrate you may have a set of tools, i.e. a knife, screw driver, pick, metal file, corkscrew etc. XE Trader is packed with many all in one features similar to that of a Swiss Army Knife, features that will enhance your trading experience. XE Trader is delivered to you as a platform not an application with its versatility you can install third party applications within this platform. September 2015, the claim has been made that “XE Trader is the world's most advanced currency pair trend indicator and signals robot designed specifically for binary options trading”. How so? “XE Trader is packed with feature rich enhancements that improve your trading experience”. The main purpose behind XE Trader is to serve as an aid in assisting traders with their understanding of trades, where the information comes from, so they can spot opportunities on their own as they arise within the markets.
 
Q2. Who’s behind this product, what’s their history? are they known criminals/scammers? Answer: XE Trader is brought to you by the world's largest privately owned binary options trader education company Options XE. Education in the form of Trading Webinars is a core part of Option XE's business. Following 3 years of development EX Trader is now the successor of the worlds first binary options robot Optionbot 2, their first creation. Over the years many trading bots have been released into the market, within weeks/months they crash and burn, never to be seen again. Optionbot 2 on the other hand has been and still in circulation, very popular and profitable since day one. This in itself attributes to the success of OptionXE’s first live OptionBot. “In short the XE Trader platform is more than a trading tool, it’s an all encompassing service which will help you win more trades and learn how to become a more effective trader”. The brains and brawn behind OptionBot2 and XE Trader include.
 
Keith Wareing.............CEO of OptionXE Jack Travers................Services Director Ben Newman...............Operations Director
 
As a collective these guys have been in the trading and training business for decades. Now totaling 30 staff, and a trained based of over 20,000 students, these guy’s leave no stone upturned when it comes to providing great support and training backing a solid product. The XE Trader product is a culmination of all of that work that as company Option EX achieved to date. All of their trading experience have been encapsulated into a single computer Window so you the trader can learn how to trade more effectively from home.
 
Q3. What are the key product features and how will these prove advantageous to me? Answer: a. Trend Indicator in also build in across 15 currency pairs. b. Push signals are available across all 30 assets, All signals provided within this platform are passed on via proven leading signal providers. c. Copy trade signals are also made available. These are particularly useful when you are attending one of Ben Newman's webinars, all of which live trading is performed on behalf attendees as they learn how to become familiar with the XE Trader trading platform. d. SMS Alerts e. Economic trading calendar: To keep you apprised of market conditions ahead of time at a glance. f. Market opening times alarm clock g. Accurate Zoomable Price Charts h. Embedded trader insight videos and bulletins surrounding market announcements and events, videos and bulletins are available on the fly.
 
Q4. If this is a signal service how does it connect with my existing broker? Answer: As an improvement from OptionBot2’s costly and strict broker entry requirements of 3 to 5 must have registered brokers The entry requirement for XE TRADER is just the one broker. You can even use your existing broker.
 
Q5. How much does this product cost? Are there any hidden costs? What’s the catch? Answer: You can pay an all up lifetime licence of 2,999 pounds, includes 1 month subscription to their daily training webinars or you can opt in for the a Free Licence offer, how long this window stays open is anyone’s guess. If this product meets popular demand and takes off as a roaring success, or if it flops, either scenario will undoubtedly have a determination as to this product windows life-cycle period.
 
Q6. If this sounds like a “Too good to be true” offer, what's the angle, how do the promoters profit? Answer: If the OptionBot2 is anything to go by I don’t believe this product falls into that category.
 
Q7. What realistically can my expectations be by connecting with this product/service? Answer: Please view the product video. Here you will find reviews by beta testers.
 
XE Trader Product Video
 
WARNING: As video has been published by OptionsXE, a pinch of salt could be in order, unbiased content? Well you decide. Historical sales and ITM performance form OptionBot2, would suggest that after years of further research and development of XE Trader could be a promising in this industry. What we have here is now called a platform, somewhat more than a trading tool, an all encompassing service that will help you win more trades and learn how to become a more effective trader.
 
Q8. If I invest in this product and it all goes very wrong, what are my options? Answer: The XE Team behind the development and support for this product are very credible, collectively they have years of knowledge and experience. Ben Newman provides live assistance and training via his complimentary webinars as a service once you register with XE Trader.
 
To conclude it is refreshing to see a sold rounded product unlike the other scams on the internet. Thank You for reviewing this article, I hope you have found it informative. Please leave a comment below, all the best as you complete you own due diligence and move forward.
 

Click here to download and register for XE Trader right now

 

WARNING Advice:

1. Always remember when testing out any new trading ventures, manual or automatic, make sure you have a money management plan, once you have a strategy in place stick with it.
 
2. A FREE trading DEMO account is a great way to test out new strategies so you don’t go bust in the process.  
3. Not all brokers are made equal when it comes to great customer service, being able to withdraw funds, having a user friendly, easy to use trading platform to work with. I have traded with a countless number of brokers, some I have had nightmare experiences. I prefer to trade only using industry regulated brokers tick all the boxes, as above ( I have listed these below). If
you are not sure, try out one of the brokers listed below, do a background check as required, they will provide you with a demo account on request.
 
 

Tried & TRUSTED BROKERS:

 
Banc De Binary
 
Cherry Trade
 
Interactive Options
 
OptionFair
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
TAGS: XE Trader app, XE Trader information, XE Trader url, XE Trader website, XE Trader youtube video, XE Trader trading software, get XE Trader, article about XE Trader, XE Trader computer program, XE Trader the
truth, XE Trader support, XE Trader support email address, XE Trader help desk, similar than XE Trader, better than XE Trader, XE Trader contact, XE Trader demo, XE Trader video tutorial, how does XE Trader
work, is XE Trader the best online is XE Trader a scam, does XE Trader really work, does XE Trader actually work, XE Trader members area, XE Trader login page, XE Trader verification, XE Trader software
reviews, XE Trader no fake review, XE Trader Live Broadcast, is XE Trader real, XE Trader forex trading, XE Trader binary options trading, XE Trader automated app, the XE Trader review, XE Trader signals,
XE Trader mac os x, XE Trader broker sign up, protectedprofits.com, protectedprofits.com review, protectedprofits.com reviews,XE Trader free download, reviews of XE Trader, XE Trader live results, XE Trader
bonus, XE Trader honest review, XE Trader 2015, is XE Trader worth the risk, XE Trader pc desktop, XE Trader free trial,XE Trader testimonial, XE Trader scam watch dog, XE Trader warrior forum, XE Trader
web version, XE Trader open a account, XE Trader laptop, XE Trader revised Method 2015, XE Trader Unbiased review, is XE Trader all hype?, real people invested in XE Trader, is XE Trader a shame, XE Trader
discount, XE Trader binary option watch dog review, XE Trader youtube, seriously will XE Trader work, XE Trader facebook, XE Trader activation code, XE Trader 2015 Working, XE Trader twitter, XE Trader
currency trading, XE Trader real person review, XE Trader example trade, will XE Trader work on mobile phone, Completely New XE Trader, XE Trader customer service, new XE Trader, XE Trader webinar, XE
Trader webinar replay, XE Trader anybody using this, XE Trader real or fake, is XE Trader live trades real, XE Trader is this a scam, is XE Trader reliable?, XE Trader honest reviews, XE Trader is it a
scam, XE Trader download software, XE Trader app review, XE Trader software download, XE Trader forum, XE Trader signals, XE Trader download page, XE Trader software demo somebody using it, XE Trader binary
software, XE Trader binary options review, XE Trader members, XE Trader scam or legit,XE Trader comments, minimum deposit for XE Trader, XE Trader reviews, XE Trader binary today, XE Trader pro review, XE
Trader windows 7, XE Trader windows 8 and windows XP, XE Trader scam or real, XE Trader login, XE Trader has anybody out there made any money out of it?, XE Trader vip membership pass, does XE Trader work
on autopilot?, XE Trader price, is XE Trader a scam or not, will XE Trader help me, real truth about XE Trader, XE Trader System, XE Trader inside members page, XE Trader software downloads, how to download
XE Trader, how to access XE Trader, XE Trader Robot, how to use XE Trader, how to trade with XE Trader, XE Trader NEWS Update and details, XE Trader sign in, the XE Trader trading options, XE Trader info,
XE Trader information, XE Trader searching for new winning trades, XE Trader today, XE Trader feedback, XE Trader real user review, XE Trader customer reviews, XE Trader consumer review, XE Trader Review
2015, insider john XE Trader review, george s XE Trader review, XE Trader doesn't work, is XE Trader another scam or legit, XE Trader refund, Activate XE Trader, review of XE Trader, log on to XE Trader, is
XE Trader manual binary trading, XE Trader bot review, XE Trader test, XE Trader explanation, what brokers work with XE Trader software, what is XE Trader, XE Trader news, new version of XE Trader, XE
Trader fan Page, XE Trader breaking news, XE Trader Register, XE Trader sign up, XE Trader broker sign up, XE Trader real proof, how to activate auto trading on XE Trader,XE Trader robot, XE Trader members
area, XE Trader sign in, web version XE Trader, should i use XE Trader, XE Trader yes or no, do i need trading experience, XE Trader create account, XE Trader instructions, how to get a XE Trader demo, XE
Trader special, desktop XE Trader, XE Trader Secret method, Join XE Trader, XE Trader ea trading app, XE Trader limited time, XE Trader pros and cons, XE Trader bad reviews, is XE Trader software automatic
binary trading, XE Trader negative and positive review, XE Trader Author, XE Trader creator, who made XE Trader, what is the XE Trader, XE Trader real review, XE Trader broker, XE Trader sign up broker, XE
Trader sign up broker review, XE Trader fund broker, XE Trader how to fund broker,XE Trader deposit funds into broker, how does XE Trader trade, XE Trader trading bot, what is XE Trader and cost?, XE Trader
strategy, XE Trader password reset, XE Trader beta tester, XE Trader comparison, XE Trader questions and answers, rate & review XE Trader, rate and reviews XE Trader, is XE Trader site legit?, XE Trader
reviews online, is XE Trader for real, XE Trader login page, XE Trader results, XE Trader winning and losing trades, XE Trader overview, XE Trader training, how to setup XE Trader, XE Trader home, real
testimonial on XE Trader system, XE Trader real time trading, start trading with XE Trader, XE Trader proof, XE Trader the truth, Get XE Trader, XE Trader Review
submitted by tomwinninghardy to twhREVIEWS [link] [comments]

Tick Charts Give You A Winning Edge In Day Trading - YouTube Understanding Tick Charts - YouTube Using the 512 tick chart to validate your entry and enter ... 233 tick chart trading the 535 EMA - YouTube MT4+ Tick Chart Trader How to use 70 Tick Charts in MT4 FREE - Video

Forex Tester 4 allows you to test more trading instruments simultaneously like it is in real-time trading. After pressing the Create button your testing process will begin and chart with your trading instrument(s) will appear. You can manipulate the speed of testing and pause it whenever you want. There is an option to show only the next candle ... Both Forex Tester 2 and 3 software have pre-set hotkeys for every function that speeds up the Forex training time. Graphic tools such as Lines, waves, Fibonacci, and shapes for analysis and chart markup. Forex 3 simulator software can be used on multiple monitors at simultaneously. It also allows instantaneous correction of mistakes. Forex Tester provides its users with six chart modes. Three of them are situated on the toolbar and in the “View ... Finally, the sixth mode is the Tick chart mode. It shows every single price change within a current data range. To switch to Tick chart you should click on “Ticks ” tab in left upper corner of the screen. By default, all up-candles have lime color borders with a ... One of the most important improvements that I noticed in my Forex Tester 3 review was some added on-the-chart trading functionality. For instance, you can now drag your stop loss and take profit levels from the chart to adjust them. However, unlike MT4, you still cannot create your trade levels from the chart. Renko charts were added this time around. Forex Tester 3 now supports lines, bars ... Home Latest answers about backtesting and trading simulator [All in one place] Forex Tester General Questions about FT; How to create 70 tick chart with FT3. Ask general questions about the software. 5 posts • Page 1 of 1. Message. Author. koala105 Posts: 2 Joined: Mon Dec 26, 2016 12:44 pm. How to create 70 tick chart with FT3 #1 Post by koala105 » Sun Jan 01, 2017 9:30 pm . I would like ... On the left, we have a 233 tick chart and on the right, we have a 5 minute chart. If there is less activity, the tick chart will output less candles than the time-based charts, which often makes for cleaner trends and a better understanding of price momentum. Sounds good, right? Why you shouldn’t use them . It does sound good! And tick charts can be a quite valuable asset in the trader’s ... Forex Tester 4 has a lot of the look and feel of Forex Tester (which is good). The software is very customizable and includes features like Hotkeys for almost any action and quick buy or sell orders all of which allow for quick action for fast testing. The ability to use fixed fractional position sizing is the most exciting feature. This allows users to take realistic trades and see their ...

[index] [12829] [4261] [4267] [28730] [2129] [5610] [9754] [18101] [17509] [17187]

Tick Charts Give You A Winning Edge In Day Trading - YouTube

The Tick Chart Trader Add-On shows tick charts (compiled from the time that it started running) in a variety of styles providing extra-fast position entry and exit, on a “First In - First Out ... Live Coaching Offer: https://www.iamadaytrader.com/Master-Trader-Coaching-Class Free EBook http://ebook.iamadaytrader.com/ Free Training Manual http://... Tick Charts in day trading: Are they better than minute charts? http://www.topdogtrading.net/youtubeorganic-trading Here are 3 advantages that tick charts ha... Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube. My Broker: https://bit.ly/MyFXBroker Become a Funded Trader: https://bit.ly/FundedTrader FX Blue Tick Charts: https://www.fxblue.com/appstore/12/tick-charts-... Understanding tick charts: an introduction to tick charts. Read the Full article Below http://www.envisionchart.com/tick-charts-trading/ Hi traders, in this ...

http://binary-optiontrade.lanwothiraco.ml