FX Blue Tick Charts for MT4 - forex trading and services

Tick on Chart MetaTrader 4 Forex Indicator - Download MT4 Free!

Tick on Chart MetaTrader 4 Forex Indicator - Download MT4 Free! submitted by ForexMTindicators to u/ForexMTindicators [link] [comments]

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]

Finding Trading Edges: Where to Get High R:R trades and Profit Potential of Them.

Finding Trading Edges: Where to Get High R:R trades and Profit Potential of Them.
TL;DR - I will try and flip an account from $50 or less to $1,000 over 2019. I will post all my account details so my strategy can be seen/copied. I will do this using only three or four trading setups. All of which are simple enough to learn. I will start trading on 10th January.
----
As I see it there are two mains ways to understand how to make money in the markets. The first is to know what the biggest winners in the markets are doing and duplicating what they do. This is hard. Most of the biggest players will not publicly tell people what they are doing. You need to be able to kinda slide in with them and see if you can pick up some info. Not suitable for most people, takes a lot of networking and even then you have to be able to make the correct inferences.
Another way is to know the most common trades of losing traders and then be on the other side of their common mistakes. This is usually far easier, usually everyone knows the mind of a losing trader. I learned about what losing traders do every day by being one of them for many years. I noticed I had an some sort of affinity for buying at the very top of moves and selling at the very bottom. This sucked, however, is was obvious there was winning trades on the other side of what I was doing and the adjustments to be a good trader were small (albeit, tricky).
Thus began the study for entries and maximum risk:reward. See, there have been times I have bought aiming for a 10 pip scalps and hit 100 pips stops loss. Hell, there have been times I was going for 5 pips and hit 100 stop out. This can seem discouraging, but it does mean there must be 1:10 risk:reward pay-off on the other side of these mistakes, and they were mistakes.
If you repeatedly enter and exit at the wrong times, you are making mistakes and probably the same ones over and over again. The market is tricking you! There are specific ways in which price moves that compel people to make these mistakes (I won’t go into this in this post, because it takes too long and this is going to be a long post anyway, but a lot of this is FOMO).
Making mistakes is okay. In fact, as I see it, making mistakes is an essential part of becoming an expert. Making a mistake enough times to understand intrinsically why it is a mistake and then make the required adjustments. Understanding at a deep level why you trade the way you do and why others make the mistakes they do, is an important part of becoming an expert in your chosen area of focus.
I could talk more on these concepts, but to keep the length of the post down, I will crack on to actual examples of trades I look for. Here are my three main criteria. I am looking for tops/bottoms of moves (edge entries). I am looking for 1:3 RR or more potential pay-offs. My strategy assumes that retail trades will lose most of the time. This seems a fair enough assumption. Without meaning to sound too crass about it, smart money will beat dumb money most of the time if the game is base on money. They just will.
So to summarize, I am looking for the points newbies get trapped in bad positions entering into moves too late. From these areas, I am looking for high RR entries.
Setup Examples.
I call this one the “Lightning Bolt correction”, but it is most commonly referred to as a “two leg correction”. I call it a “Lightning Bolt correction” because it looks a bit like one, and it zaps you. If you get it wrong.

https://preview.redd.it/t4whwijse2721.png?width=1326&format=png&auto=webp&s=c9050529c6e2472a3ff9f8e7137bd4a3ee5554cc
Once I see price making the first sell-off move and then begin to rally towards the highs again, I am waiting for a washout spike low. The common trades mistakes I am trading against here is them being too eager to buy into the trend too early and for the to get stopped out/reverse position when it looks like it is making another bearish breakout. Right at that point they panic … literally one candle under there is where I want to be getting in. I want to be buying their stop loss, essentially. “Oh, you don’t want that ...okay, I will have that!”
I need a precise entry. I want to use tiny stops (for big RR) so I need to be cute with entries. For this, I need entry rules. Not just arbitrarily buying the spike out. There are a few moving parts to this that are outside the scope of this post but one of my mains ways is using a fibs extension and looking for reversals just after the 1.61% level. How to draw the fibs is something else that is outside the scope of this but for one simple rule, they can be drawn on the failed new high leg.

https://preview.redd.it/2cd682kve2721.png?width=536&format=png&auto=webp&s=f4d081c9faff49d0976f9ffab260aaed2b570309
I am looking for a few specific things for a prime setup. Firstly, I am looking for the false hope candles, the ones that look like they will reverse the market and let those buying too early get out break-even or even at profit. In this case, you can see the hammer and engulfing candle off the 127 level, then it spikes low in that “stop-hunt” sort of style.
Secondly I want to see it trading just past my entry level (161 ext). This rule has come from nothing other than sheer volume. The amount of times I’ve been stopped out by 1 pip by that little sly final low has gave birth to this rule. I am looking for the market to trade under support in a manner that looks like a new strong breakout. When I see this, I am looking to get in with tiny stops, right under the lows. I will also be using smaller charts at this time and looking for reversal clusters of candles. Things like dojis, inverted hammers etc. These are great for sticking stops under.
Important note, when the lightning bolt correction fails to be a good entry, I expect to see another two legs down. I may look to sell into this area sometimes, and also be looking for buying on another couple legs down. It is important to note, though, when this does not work out, I expect there to be continued momentum that is enough to stop out and reasonable stop level for my entry. Which is why I want to cut quick. If a 10 pips stop will hit, usually a 30 pips stop will too. Bin it and look for the next opportunity at better RR.

https://preview.redd.it/mhkgy35ze2721.png?width=1155&format=png&auto=webp&s=a18278b85b10278603e5c9c80eb98df3e6878232
Another setup I am watching for is harmonic patterns, and I am using these as a multi-purpose indicator. When I see potentially harmonic patterns forming, I am using their completion level as take profits, I do not want to try and run though reversal patterns I can see forming hours ahead of time. I also use them for entering (similar rules of looking for specific entry criteria for small stops). Finally, I use them as a continuation pattern. If the harmonic pattern runs past the area it may have reversed from, there is a high probability that the market will continue to trend and very basic trend following strategies work well. I learned this from being too stubborn sticking with what I thought were harmonic reversals only to be ran over by a trend (seriously, everything I know I know from how it used to make me lose).

https://preview.redd.it/1ytz2431f2721.png?width=1322&format=png&auto=webp&s=983a7f2a91f9195004ad8a2aa2bb9d4d6f128937
A method of spotting these sorts of M/W harmonics is they tend to form after a second spike out leg never formed. When this happens, it gives me a really good idea of where my profit targets should be and where my next big breakout level is. It is worth noting, larger harmonics using have small harmonics inside them (on lower time-frames) and this can be used for dialling in optimum entries. I also use harmonics far more extensively in ranging markets. Where they tend to have higher win rates.
Next setup is the good old fashioned double bottoms/double top/one tick trap sort of setup. This comes in when the market is highly over extended. It has a small sell-off and rallies back to the highs before having a much larger sell-off. This is a more risky trade in that it sells into what looks like trending momentum and can be stopped out more. However, it also pays a high RR when it works, allowing for it to be ran at reduced risk and still be highly profitable when it comes through.

https://preview.redd.it/1bx83776f2721.png?width=587&format=png&auto=webp&s=2c76c3085598ae70f4142d26c46c8d6e9b1c2881
From these sorts of moves, I am always looking for a follow up buy if it forms a lightning bolt sort of setup.
All of these setups always offer 1:3 or better RR. If they do not, you are doing it wrong (and it will be your stop placement that is wrong). This is not to say the target is always 1:3+, sometimes it is best to lock in profits with training stops. It just means that every time you enter, you can potentially have a trade that runs for many times more than you risked. 1:10 RR can be hit in these sorts of setups sometimes. Paying you 20% for 2% risked.
I want to really stress here that what I am doing is trading against small traders mistakes. I am not trying to “beat the market maker”. I am not trying to reverse engineer J.P Morgan’s black boxes. I do not think I am smart enough to gain a worthwhile edge over these traders. They have more money, they have more data, they have better softwares … they are stronger. Me trying to “beat the market maker” is like me trying to beat up Mike Tyson. I might be able to kick him in the balls and feel smug for a few seconds. However, when he gets up, he is still Tyson and I am still me. I am still going to be pummeled.
I’ve seen some people that were fairly bright people going into training courses and coming out dumb as shit. Thinking they somehow are now going to dominate Goldman Sachs because they learned a chart pattern. Get a grip. For real, get a fucking grip. These buzz phrases are marketeering. Realististically, if you want to win in the markets, you need to have an edge over somebody.
I don’t have edges on the banks. If I could find one, they’d take it away from me. Edges work on inefficiencies in what others do that you can spot and they can not. I do not expect to out-think a banks analysis team. I know for damn sure I can out-think a version of me from 5 years ago … and I know there are enough of them in the markets. I look to trade against them. I just look to protect myself from the larger players so they can only hurt me in limited ways. Rather than letting them corner me and beat me to a pulp (in the form of me watching $1,000 drop off my equity because I moved a stop or something), I just let them kick me in the butt as I run away. It hurts a little, but I will be over it soon.
I believe using these principles, these three simple enough edge entry setups, selectiveness (remembering you are trading against the areas people make mistakes, wait for they areas) and measured aggression a person can make impressive compounded gains over a year. I will attempt to demonstrate this by taking an account of under $100 to over $1,000 in a year. I will use max 10% on risk on a position, the risk will scale down as the account size increases. In most cases, 5% risk per trade will be used, so I will be going for 10-20% or so profits. I will be looking only for prime opportunities, so few trades but hard hitting ones when I take them.
I will start trading around the 10th January. Set remind me if you want to follow along. I will also post my investor login details, so you can see the trades in my account in real time. Letting you see when I place my orders and how I manage running positions.
I also think these same principles can be tweaked in such a way it is possible to flip $50 or so into $1,000 in under a month. I’ve done $10 to $1,000 in three days before. This is far more complex in trade management, though. Making it hard to explain/understand and un-viable for many people to copy (it hedges, does not comply with FIFO, needs 1:500 leverage and also needs spreads under half a pip on EURUSD - not everyone can access all they things). I see all too often people act as if this can’t be done and everyone saying it is lying to sell you something. I do not sell signals. I do not sell training. I have no dog in this fight, I am just saying it can be done. There are people who do it. If you dismiss it as impossible; you will never be one of them.
If I try this 10 times with $50, I probably am more likely to make $1,000 ($500 profit) in a couple months than standard ideas would double $500 - I think I have better RR, even though I may go bust 5 or more times. I may also try to demonstrate this, but it is kinda just show-boating, quite honestly. When it works, it looks cool. When it does not, I can go bust in a single day (see example https://www.fxblue.com/users/redditmicroflip).
So I may or may not try and demonstrate this. All this is, is just taking good basic concepts and applying accelerated risk tactics to them and hitting a winning streak (of far less trades than you may think). Once you have good entries and RR optimization in place - there really is no reason why you can not scale these up to do what may people call impossible (without even trying it).
I know there are a lot of people who do not think these things are possible and tend to just troll whenever people talk about these things. There used to be a time when I’d try to explain why I thought the way I did … before I noticed they only cared about telling me why they were right and discussion was pointless. Therefore, when it comes to replies, I will reply to all comments that ask me a question regarding why I think this can be done, or why I done something that I done. If you are commenting just to tell me all the reasons you think I am wrong and you are right, I will probably not reply. I may well consider your points if they are good ones. I just do not entering into discussions with people who already know everything; it serves no purpose.

Edit: Addition.

I want to talk a bit more about using higher percentage of risk than usual. Firstly, let me say that there are good reasons for risk caps that people often cite as “musts”. There are reasons why 2% is considered optimum for a lot of strategies and there are reasons drawing down too much is a really bad thing.
Please do not be ignorant of this. Please do not assume I am, either. In previous work I done, I was selecting trading strategies that could be used for investment. When doing this, my only concern was drawdown metrics. These are essential for professional money management and they are also essential for personal long-term success in trading.
So please do not think I have not thought of these sorts of things Many of the reasons people say these things can’t work are basic 101 stuff anyone even remotely committed to learning about trading learns in their first 6 months. Trust me, I have thought about these concepts. I just never stopped thinking when I found out what public consensus was.
While these 101 rules make a lot of sense, it does not take away from the fact there are other betting strategies, and if you can know the approximate win rate and pay-off of trades, you can have other ways of deriving optimal bet sizes (risk per trade). Using Kelly Criterion, for example, if the pay-off is 1:3 and there is a 75% chance of winning, the optimal bet size is 62.5%. It would be a viable (high risk) strategy to have extremely filtered conditions that looked for just one perfect set up a month, makingover 150% if it was successful.
Let’s do some math on if you can pull that off three months in a row (using 150% gain, for easy math). Start $100. Month two starts $250. Month three $625. Month three ends $1,562. You have won three trades. Can you win three trades in a row under these conditions? I don’t know … but don’t assume no-one can.
This is extremely high risk, let’s scale it down to meet somewhere in the middle of the extremes. Let’s look at 10%. Same thing, 10% risk looking for ideal opportunities. Maybe trading once every week or so. 30% pay-off is you win. Let’s be realistic here, a lot of strategies can drawdown 10% using low risk without actually having had that good a chance to generate 30% gains in the trades it took to do so. It could be argued that trading seldomly but taking 5* the risk your “supposed” to take can be more risk efficient than many strategies people are using.
I am not saying that you should be doing these things with tens of thousands of dollars. I am not saying you should do these things as long term strategies. What I am saying is do not dismiss things out of hand just because they buck the “common knowns”. There are ways you can use more aggressive trading tactics to turn small sums of money into they $1,000s of dollars accounts that you exercise they stringent money management tactics on.
With all the above being said, you do have to actually understand to what extent you have an edge doing what you are doing. To do this, you should be using standard sorts of risks. Get the basics in place, just do not think you have to always be basic. Once you have good basics in place and actually make a bit of money, you can section off profits for higher risk versions of strategies. The basic concepts of money management are golden. For longevity and large funds; learned them and use them! Just don’t forget to think for yourself once you have done that.

Update -

Okay, I have thought this through a bit more and decided I don't want to post my live account investor login, because it has my full name and I do not know who any of you are. Instead, for copying/observing, I will give demo account login (since I can choose any name for a demo).
I will also copy onto a live account and have that tracked via Myfxbook.
I will do two versions. One will be FIFO compliant. It will trade only single trade positions. The other will not be FIFO compliant, it will open trades in batches. I will link up live account in a week or so. For now, if anyone wants to do BETA testing with the copy trader, you can do so with the following details (this is the non-FIFO compliant version).

Account tracking/copying details.

Low-Medium risk.
IC Markets MT4
Account number: 10307003
Investor PW: lGdMaRe6
Server: Demo:01
(Not FIFO compliant)

Valid and Invalid Complaints.
There are a few things that can pop up in copy trading. I am not a n00b when it comes to this, so I can somewhat forecast what these will be. I can kinda predict what sort of comments there may be. Some of these are valid points that if you raise I should (and will) reply to. Some are things outside of the scope of things I can influence, and as such, there is no point in me replying to. I will just cover them all here the one time.

Valid complains are if I do something dumb or dramatically outside of the strategy I have laid out here. won't do these, if I do, you can pitchfork ----E

Examples;

“Oi, idiot! You opened a trade randomly on a news spike. I got slipped 20 pips and it was a shit entry”.
Perfectly valid complaint.

“Why did you open a trade during swaps hours when the spread was 30 pips?”
Also valid.

“You left huge trades open running into the weekend and now I have serious gap paranoia!”
Definitely valid.

These are examples of me doing dumb stuff. If I do dumb stuff, it is fair enough people say things amounting to “Yo, that was dumb stuff”.

Invalid Complains;

“You bought EURUSD when it was clearly a sell!!!!”
Okay … you sell. No-one is asking you to copy my trades. I am not trading your strategy. Different positions make a market.

“You opened a position too big and I lost X%”.
No. Na uh. You copied a position too big. If you are using a trade copier, you can set maximum risk. If you neglect to do this, you are taking 100% risk. You have no valid compliant for losing. The act of copying and setting the risk settings is you selecting your risk. I am not responsible for your risk. I accept absolutely no liability for any losses.
*Suggested fix. Refer to risk control in copy trading software

“You lost X trades in a row at X% so I lost too much”.
Nope. You copied. See above. Anything relating to losing too much in trades (placed in liquid/standard market conditions) is entirely you. I can lose my money. Only you can set it up so you can lose yours. I do not have access to your account. Only mine.
*Suggested fix. Refer to risk control in copy trading software

“Price keeps trading close to the pending limit orders but not filling. Your account shows profits, but mine is not getting them”.
This is brokerage. I have no control over this. I use a strategy that aims for precision, and that means a pip here and there in brokerage spreads can make a difference. I am trading to profit from my trading conditions. I do not know, so can not account for, yours.
* Suggested fix. Compare the spread on your broker with the spread on mine. Adjust your orders accordingly. Buy limit orders will need to move up a little. Sell limit orders should not need adjusted.

“I got stopped out right before the market turned, I have a loss but your account shows a profit”.
This is brokerage. I have no control over this. I use a strategy that aims for precision, and that means a pip here and there differences in brokerage spreads can make a difference. I am trading to profit from my trading conditions. I do not know, so can not account for, yours.
** Suggested fix. Compare the spread on your broker with the spread on mine. Adjust your orders accordingly. Stop losses on sell orders will need to move up a bit. Stops on buy orders will be fine.

“Your trade got stopped out right before the market turned, if it was one more pip in the stop, it would have been a winner!!!”
Yeah. This happens. This is where the “risk” part of “risk:reward” comes in.

“Price traded close to take profit, yours filled but mines never”.
This is brokerage. I have no control over this. I use a strategy that aims for precision, and that means a pip here and there differences in brokerage spreads can make a difference. I am trading to profit from my trading conditions. I do not know, so can not account for, yours.
(Side note, this should not be an issue since when my trade closes, it should ping your account to close, too. You might get a couple less pips).
*** Suggested fix. Compare the spread on your broker with the spread on mine. Adjust your orders accordingly. Take profits on buys will need to move up a bit. Sell take profits will be fine.

“My brokers spread jumped to 20 during the New York session so the open trade made a bigger loss than it should”.
Your broker might just suck if this happens. This is brokerage. I have no control over this. My trades are placed to profit from my brokerage conditions. I do not know, so can not account for yours. Also, if accounting for random spread spikes like this was something I had to do, this strategy would not be a thing. It only works with fair brokerage conditions.
*Suggested fix. Do a bit of Googling and find out if you have a horrific broker. If so, fix that! A good search phrase is; “(Broker name) FPA reviews”.

“Price hit the stop loss but was going really fast and my stop got slipped X pips”.
This is brokerage. I have no control over this. I use a strategy that aims for precision, and that means a pip here and there differences in brokerage spreads can make a difference. I am trading to profit from my trading conditions. I do not know, so can not account for, yours.
If my trade also got slipped on the stop, I was slipped using ECN conditions with excellent execution; sometimes slips just happen. I am doing the most I can to prevent them, but it is a fact of liquidity that sometimes we get slipped (slippage can also work in our favor, paying us more than the take profit would have been).

“Orders you placed failed to execute on my account because they were too large”.
This is brokerage. I have no control over this. Margin requirements vary. I have 1:500 leverage available. I will not always be using it, but I can. If you can’t, this will make a difference.

“Your account is making profits trading things my broker does not have”
I have a full range of assets to trade with the broker I use. Included Forex, indices, commodities and cryptocurrencies. I may or may not use the extent of these options. I can not account for your brokerage conditions.

I think I have covered most of the common ones here. There are some general rules of thumb, though. Basically, if I do something that is dumb and would have a high probability of losing on any broker traded on, this is a valid complain.

Anything that pertains to risk taken in standard trading conditions is under your control.

Also, anything at all that pertains to brokerage variance there is nothing I can do, other than fully brief you on what to expect up-front. Since I am taking the time to do this, I won’t be a punchbag for anything that happens later pertaining to this.

I am not using an elitist broker. You don’t need $50,000 to open an account, it is only $200. It is accessible to most people - brokerage conditions akin to what I am using are absolutely available to anyone in the UK/Europe/Asia (North America, I am not so up on, so can’t say). With the broker I use, and with others. If you do not take the time to make sure you are trading with a good broker, there is nothing I can do about how that affects your trades.

I am using an A book broker, if you are using B book; it will almost certainly be worse results. You have bad costs. You are essentially buying from reseller and paying a mark-up. (A/B book AKA ECN/Market maker; learn about this here). My EURUSD spread will typically be 0.02 pips or so, if yours is 1 pip, this is a huge difference.
These are typical spreads I am working on.

https://preview.redd.it/yc2c4jfpab721.png?width=597&format=png&auto=webp&s=c377686b2485e13171318c9861f42faf325437e1


Check the full range of spreads on Forex, commodities, indices and crypto.

Please understand I want nothing from you if you benefit from this, but I am also due you nothing if you lose. My only term of offering this is that people do not moan at me if they lose money.

I have been fully upfront saying this is geared towards higher risk. I have provided information and tools for you to take control over this. If I do lose people’s money and I know that, I honestly will feel a bit sad about it. However, if you complain about it, all I will say is “I told you that might happen”, because, I am telling you that might happen.

Make clear headed assessments of how much money you can afford to risk, and use these when making your decisions. They are yours to make, and not my responsibility.

Update.

Crazy Kelly Compounding: $100 - $11,000 in 6 Trades.

$100 to $11,000 in 6 trades? Is it a scam? Is it a gamble? … No, it’s maths.

Common sense risk disclaimer: Don’t be a dick! Don’t risk money you can’t afford to lose. Do not risk money doing these things until you can show a regular profit on low risk.
Let’s talk about Crazy Kelly Compounding (CKC). Kelly criterion is a method for selecting optimal bet sizes if the odds and win rate are known (in other words, once you have worked out how to create and assess your edge). You can Google to learn about it in detail. The formula for Kelly criterion is;
((odds-1) * (percentage estimate)) - (1-percent estimate) / (odds-1) X 100
Now let’s say you can filter down a strategy to have a 80% win rate. It trades very rarely, but it had a very high success rate when it does. Let’s say you get 1:2 RR on that trade. Kelly would give you an optimum bet size of about 60% here. So if you win, you win 120%. Losing three trades in a row will bust you. You can still recover from anything less than that, fairly easily with a couple winning trades.
This is where CKC comes in. What if you could string some of these wins together, compounding the gains (so you were risking 60% each time)? What if you could pull off 6 trades in a row doing this?
Here is the math;

https://preview.redd.it/u3u6teqd7c721.png?width=606&format=png&auto=webp&s=3b958747b37b68ec2a769a8368b5cbebfe0e97ff
This shows years, substitute years for trades. 6 trades returns $11,338! This can be done. The question really is if you are able to dial in good enough entries, filter out enough sub-par trades and have the guts to pull the trigger when the time is right. Obviously you need to be willing to take the hit, obviously that hit gets bigger each time you go for it, but the reward to risk ratio is pretty decent if you can afford to lose the money.
We could maybe set something up to do this on cent brokers. So people can do it literally risking a couple dollars. I’d have to check to see if there was suitable spreads etc offered on them, though. They can be kinda icky.
Now listen, I am serious … don’t be a dick. Don’t rush out next week trying to retire by the weekend. What I am showing you is the EXTRA rewards that come with being able to produce good solid results and being able to section off some money for high risk “all or nothing” attempts; using your proven strategies.
I am not saying anyone can open 6 trades and make $11,000 … that is rather improbable. What I am saying is once you can get the strategy side right, and you can know your numbers; then you can use the numbers to see where the limits actually are, how fast your strategy can really go.
This CKC concept is not intended to inspire you to be reckless in trading, it is intended to inspire you to put focus on learning the core skills I am telling you that are behind being able to do this.
submitted by inweedwetrust 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]

Do you think someone will buy my C++ source code of a backtest/trade system?

Hi all,
This is not an AD, but I'm asking your opinion whether someone may be interested in my system, or whehter it's worth that I do some work to find a buyer. This is a backtesting and trade system, not strategy.
Main functions and features: * Written in C++, using Qt framework. Can run on Windows, Linux, and Mac. * Console program, very fast. * Currently only support Forex, but it's easy to extend to support other markets, such as Stock. * Backtesting. Candle bar based backtesting. It's not difficult to support tick based backtesting. * Optimization. Currently only brute force is supported, but it's quite easy to plug in other methods. * Walkforward testing. * Multiple threading. OpenMp is used for multithreading, each backtesting task is allocated on a CPU core. * One robot can use multiple instruments and multiple time frames. * Live trading system. Currently Oanda REST API is implemented. One robot can place buy/sell order on different account, to avoid no-hedging limitation. I have used it on my live account, and it works well. * Any more trade platforms should be able to be integrated to the system, such as FIX, but I didnt do any investigation yet. * Some indicators are included. MA, RSI, MACD, PSAR, etc, using ta_lib. New indicators can be developed easily. * Dukascopy data download. Incremental download tick data from Dukascopy, very fast. * Oanda data download. Using Oanda REST API, incremental, very fast. * Simple charting. So the report contains a balance chart, very intuitive. * Some other features, such as convert Dukascopy tick data to internal candle binary data, convert candle data to MT4 CSV, etc. * Unit testing. Some key components are unit tested. * High quality code. I'm an experienced developer. You can check my code quality and style from my open source C++ library, cpgf, on github, though it's not finance related. * Very good performance. The bar based backtesting system is highly optimized. * Since the architecture is good, the system can be used as either a program or a library. * About 50K lines of C++ code. * I spent about one year partial time on it.
My question is, do you think anyone will be interested to buy my source code? And how much do you think I should charge for? Or beside selling the source code, what do you think I can do to earn some money via the system? My original purpose developing such a system is to use by myself, but I'm not sure when I can find a good strategy to earn some money for me.
Thanks
submitted by wqking to algotrading [link] [comments]

Historical Charts for MT4 ?

Hello !
for extended testing i am looking for forex charts 2013-2015 because it seemes that MT4 (or my broker) is just hopping one year back at maximum. Is there a way to extend the testing in "Each tick" method for a longer period ?
TestGenerator: no history data 'EURUSD30' from 2015.01.01 to 2015.10.13
submitted by Dr_Wellington_Yueh to Forex [link] [comments]

Any traders using tick volume? I want to hear from you

So - as you know, forex volume is decentralized, so any volume measures are interpreted, usually by tick volume. I want to hear from traders who use tick:
submitted by El_Huachinango to Forex [link] [comments]

MT4+ Tick Chart Trader Tick Chart – indicator for MetaTrader 4 How to use 70 Tick Charts in MT4 FREE - Video How To Fix the Tick Chart Shift in MT4 So It Displays Full ...

Forex tick charts . A tick in the context of forex tick charts is the change in price of a forex pair caused by a single trade. So instead of showing time-based charts like a 5 minute or 4 hour charts, tick charts will only print a new candle after a number of trades have happened. The number of trades is completely configurable, so you could ... Forex Tick Charts Online. InstaForex broker presents specialized Tick Line Charts which help to monitor price fluctuations of the chosen currency pairs online accurate to five decimal places. Besides, Tick Line Forex Chart by InstaForex provides a great opportunity to adjust interface of the chart and use full screen size mode. Forex charts by InstaForex broker is an important instrument for ... Tick Size, Tick Rate, Tick Spread, and Tick Logger indicators 36 replies Trading using 110 Tick and 440 tick charts 9 replies Tick By Tick M1 MT4 History 2 replies MT4 Indicator Download – Instructions. Tick Chart is a Metatrader 4 (MT4) indicator and the essence of the forex indicator is to transform the accumulated history data. Tick Chart provides for an opportunity to detect various peculiarities and patterns in price dynamics which are invisible to the naked eye. As tick charts are transaction based and make new bars only when there have been enough trades, they adjust to the market and draw more bars in case of high activity. This helps to notice momentum and increasing volatility. The same way during low activity periods (like noon or after-hours) tick charts only display a few bars as opposed to time based charts where you'll usually see a row of ... The Custom Timeframe Generator lets you create charts for timeframes which are not available by default in MetaTrader 4, e.g. 10-second charts, 3-minute charts, or tick charts. You run a Generator EA on a normal chart for your chosen symbol, and the custom timeframe is then available from MT4's list of offline charts. The custom timeframe continues to update for as long as the Generator EA is ... The Custom Timeframe Generator lets you create charts for timeframes which are not available by default in MetaTrader 4, e.g. 10-second charts, 3-minute charts, tick charts, or range charts. You run a Generator EA on a normal chart for your chosen symbol, and the custom timeframe is then available from MT4's list of offline charts.

[index] [6643] [8174] [27898] [22694] [5934] [25323] [7370] [13188] [14305] [20129]

MT4+ Tick Chart Trader

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-... How To Fix the Tick Chart Shift in MT4 So It Displays Full Screen. Watch later. Share. Copy link. Info. Shopping. Tap to unmute. If playback doesn't begin shortly, try restarting your device. Up... Trade quickly using your keyboard or mouse right from the tick charts in your MT4+ terminal. The Tick Chart Trader Add-On shows tick charts (compiled from the time that it started running) in a ... ForexMT4Indicators.com are a compilation of free download of forex strategies, forex systems, forex mt4 indicators, forex mt5 indicators, technical analysis and fundamental analysis in forex trading.

http://binaryoptiontrade.dicarego.gq