I want 3 major changes CHANGE 1 extern bool adaptive setting = false; (default) The idea to this is that all settings from lot size will be changed according to a condition. In this case, the condition will be check heiken ashi on a higher timeframe and if heiken value is a specified bars in (for instance heiken is in buy/sell direction but is 4(this is input) candlesticks in), change settings, else revert back to original. settings to change to; extern double LotSize = 0; extern double MaximumRiskPercentage = 3; extern int ThresTime = 10; extern int Cutoffvol = 20; extern int timeframe = 15; extern bool martindale = true; extern double multi = 2; extern int zigthres = 4; extern int depth = 12; extern int deviation = 6; extern int backstep = 3; input bool Strategy1 = true; // USE STRATEGY 1 input bool Strategy2 = true; // USE STRATEGY 2 input bool Strategy3 = false; // USE STRATEGY 3 input double TrailStart = 100; // TRAIL START (points) input double TrailStop = 50; // TRAIL STOP (points) input double MartiProfit = 10; // MARTINGALE PROFIT ($) input double DDlimit = 5; // DD LIMIT (%) input double BTP = 5; // BASKET TP ($) Please note that this does not include the new changes, so please add them. Also, i put this much because i love to tinker and optimize. CHANGE 2 extern int martindale = 2; (default) // 0 = none, 1 = previous way of martindale, 2 = requested change (please rename) So an explanation... suppose I opened a buy direction but op(within my code. Its what I'm using to close. I used it to check for profit) is negative after a set amount of bars. I then get a sell signal and Martindale it. I then check op to see if it's now positive and if it is, I CheckForClose()/trail in code as usual. Else if it isn't, I check to see if the initial Martindale profit is positive, if it is, I leave open until I get a buy signal...if op is still negative by then, I close only the Martindale, save(as a double value)/call(orderselect()) (use what's best) the profit value to be later added to op, and then Martindale the buy....I keep going until op + old Martindale value(s) becomes positive, then I close everything, including the initial opening (regardless of whether it's negative or not). However, If by any chance the initial Martindale is negative, instead of positive, when i get a new buy signal, then I leave both the initial Martindale and original open, and open a 3rd Martindale and then rinse and repeat (start from beginning)....the Martindale will only open to a 3rd Martindale and that's it. Please do this for all 3 strategy. CHANGE 3 extern int stoponnews= 0; (default) // 0 = none, 1 = don't trade at all, 2 = trade only pair that isn't on news (please rename) suppose you are trading AUD/USD pair, check inbuilt mql news reporting for major news affecting pair. if event for any of the pair is detected, do not trade on event time or trade only winning pair on event time. For instance, if USD is getting affected negatively, then only buy for AUD/USD pair on event time period.