//+------------------------------------------------------------------+ //| FLOODMALINES.mq5 | //| Copyright 2024, SERDAR BERKE OZYASAR | //| https://www.sberke.com | //+------------------------------------------------------------------+ #property copyright "Open Source 2024, ForexSignals Developments" #property link "https://www.youtube.com/ForexSignals" #property description "FLOOD MA LINES TREND SERIES FOR MACHINE LEARNING" #property description "GNU General Public License " #property description "Free for personal usage." #property description "For commercial project please contact with us" #property description "eurousdforexlive@gmail.com" #property description "For other developments please visit https://youtube.com/ForexSignals" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ #include <\Expert\Signal\SignalMA.mqh> // Public Class CPositionInfo double abroka; double ma1[], ma2[], ma3[]; int mm1, mm2, mm3; double xma1[], xma2[], xma3[]; int xmm1, xmm2, xmm3; double zma1[], zma2[], zma3[]; int zmm1, zmm2, zmm3; input string MyTradeSuffix; ulong magicNumberSuffix = AccountInfoInteger(ACCOUNT_LOGIN); #include // Public Class CPositionInfo #include // Public Class CSymbolInfo #include // Public Clas CTrade CPositionInfo objPosition; // Properties of open position CSymbolInfo objSymbol; // symbol info object CTrade objTrade; datetime Get_history_from_date = D'2017.08.15 11:06:20'; // From date datetime Get_history_to_date = D'2099.08.15 11:06:20';//__DATE__+60*60*24; // To date ushort InpStopLoss=0;//Don't Change ushort InpTakeProfit=0;//Don't Change int numberBarsOpenPosition; double operationStopLoss=0.0; double operationTakeProffit=0.0; double operationPrice=0.0; double adjustPoint=0.0; double ExtTakeProfit=0.0; double ExtStopLoss=0.0; int StartDateNumber; long magicNumber; double theHistoryProfit; double theHistoryCounter; double theMaxCacther; double theMinCacther; //+------------------------------------------------------------------+ //+ BOLLEAN AND DOUBLE CONTROLLERS //+------------------------------------------------------------------+ input bool AutoRestart = true; input bool CloseNowEverything = false; double AutoTakeProfitLevel = 10.00; double Ax = 10000.00; double TargetEquity; bool TradeControl; //+------------------------------------------------------------------+ //+ GLOBALS //+------------------------------------------------------------------+ int EURUSD=0; int GBPUSD=1; int AUDUSD=2; int USDJPY=3; int USDCHF=4; int USDCAD=5; int EURAUD=6; int EURCAD=7; int EURCHF=8; int EURGBP=9; int EURJPY=10; int GBPJPY=11; int GBPCHF=12; int NZDUSD=13; int AUDCAD=14; int AUDJPY=15; int CHFJPY=16; int AUDNZD=17; int NZDJPY=18; int NZDCAD=19; int NZDCHF=20; int GBPNZD=21; int EURNZD=22; int GBPCAD=23; int GBPAUD=24; int AUDCHF=25; int CADCHF=26; int CADJPY=27; int XAUUSD=28; int GOLD=29; //+------------------------------------------------------------------+ //+ READ TICK PRICES //+------------------------------------------------------------------+ double theTickPrice[30]; double theTickAsk[30]; double theTickBid[30]; double theLastestAsk[30]; double theLastestBid[30]; double theNet[30]; double theNettingTotal[30]; double theNettingTickCounters[30]; double theNetFloat[30,21]; double theNet21[30]; double theNet7[30]; double theNet3[30]; double theMax[30]; double theMin[30]; double theMaxTicker[30]; double theMinTicker[30]; double theTickDifference[30]; //+------------------------------------------------------------------+ //+ EXECUTED PAIRS //+------------------------------------------------------------------+ string myAllPairs[30]; double HowManyWorkingPairs = 28; //+------------------------------------------------------------------+ //+ TRADE INFORMATION //+------------------------------------------------------------------+ double MTBuyCounts[30]; double MTSellCounts[30]; double MTBuyVolume[30]; double MTSellVolume[30]; double MTBuyProfit[30]; double MTSellProfit[30]; double MTTotalSellProfit; double MTTotalBuyProfit; int MTOrderMin[30]; //control order minutes value double MTTotalGProfit; double MTTotalGLost; double MTBuyProfitMax[30]; double MTSellProfitMax[30]; //+------------------------------------------------------------------+ //+ EXECUTE TRADE ORDES //+------------------------------------------------------------------+ string theActualSignal[30]; //+------------------------------------------------------------------+ //+ SPIRIT RATES //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int theSpirit[30];//+100 TO -100 (MAX TO MIN) int theSpiritSignal[30];//+100 TO -100 (MAX TO MIN) int thePreSpirit[30]; string theSpiritTrend[30]; struct mysignal { string now; string pre; double nowprice; double preprice; double extend; }; struct calsignal { string signal; int longcount; int shortcount; double longextendtotal; double shortextendtotal; double avelong; double aveshort; }; mysignal supersignal[99999]; calsignal signalseperate[99999]; int supercounter; int supercalcounter; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- CallPairs(); //PAIRS LOADED TradeControl=true; for(int i=0; i<28; i++) { double CheckValue = thePrice(myAllPairs[i]); theMax[i]=CheckValue; theMin[i]=CheckValue; theActualSignal[i]="notr"; } magicNumber = (long)magicNumberSuffix; TargetEquity = AccountInfoDouble(ACCOUNT_EQUITY) + AutoTakeProfitLevel; supercounter = 0; supercalcounter = 0; ENUM_TIMEFRAMES mytimeframe[]; ArrayResize(mytimeframe, 10); // Dizi boyutunu tanımla mytimeframe[0] = PERIOD_M1; mytimeframe[1] = PERIOD_M5; mytimeframe[2] = PERIOD_M15; mytimeframe[3] = PERIOD_M30; mytimeframe[4] = PERIOD_H1; mytimeframe[5] = PERIOD_H4; mytimeframe[6] = PERIOD_D1; mytimeframe[7] = PERIOD_W1; mytimeframe[8] = PERIOD_MN1; int myperiod[10]; //period değeri string trend [10,10]; myperiod[0] = 3; myperiod[1] = 7; myperiod[2] = 13; myperiod[3] = 21; myperiod[4] = 56; myperiod[5] = 233; myperiod[6] = 610; myperiod[7] = 843; myperiod[8] = 1253; int s = 1; int setbufferid = 0; for(int fs=1; fs>0; fs--) { setbufferid = 0; //if(MathMod(fs,100)==0){IndicatorRelease(mm1);IndicatorRelease(mm2);IndicatorRelease(mm3);Sleep(1000);} string subsignal = ""; for(int i=0; i<7; i++) { subsignal = subsignal + "|M:"+(string)mytimeframe[i] + "|"; //ctext = ctext + "\n" + (string)mytimeframe[i] + "\n"; for(int j=0; j<7; j++) { if(i==0) { s=fs; } if(i==1) { s=(int)(fs/5)+1; } if(i==2) { s=(int)(fs/15)+1; } if(i==3) { s=(int)(fs/30)+1; } if(i==4) { s=(int)(fs/60)+1; } if(i==5) { s=(int)(fs/240)+1; } if(i==6) { s=(int)(fs/1440)+1; } mm2 = iMA(_Symbol,mytimeframe[i],myperiod[j],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+1],0,MODE_LWMA,MODE_CLOSE)); ArraySetAsSeries(ma2,true); SetIndexBuffer(0,ma2,INDICATOR_CALCULATIONS); CopyBuffer(mm2,0,s,s+3,ma2); mm3 = iMA(_Symbol,mytimeframe[i],myperiod[j],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+1],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+2],0,MODE_LWMA,MODE_CLOSE))); ArraySetAsSeries(ma3,true); SetIndexBuffer(0,ma3,INDICATOR_CALCULATIONS); CopyBuffer(mm3,0,s,s+3,ma3); setbufferid = setbufferid + 1; trend[i,j] = "N"; if(ma2[s]>ma3[s]) { trend[i,j]="L"; } if(ma2[s]0) { //SIGNAL SEARCH & MATCH //TREND SELECTOR TRADE ANALYZER } } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- MqlDateTime stm; datetime tm=TimeCurrent(stm); //21-13-7 //56-21-13 //233-56-21 //610-233-56 //SEARCH TIME FRAME //M1-M5-M15-M30-H1-H4-D1 ENUM_TIMEFRAMES mytimeframe[]; ArrayResize(mytimeframe, 10); // Dizi boyutunu tanımla mytimeframe[0] = PERIOD_M1; mytimeframe[1] = PERIOD_M5; mytimeframe[2] = PERIOD_M15; mytimeframe[3] = PERIOD_M30; mytimeframe[4] = PERIOD_H1; mytimeframe[5] = PERIOD_H4; mytimeframe[6] = PERIOD_D1; mytimeframe[7] = PERIOD_W1; mytimeframe[8] = PERIOD_MN1; int myperiod[10]; //period değeri string trend [10,10]; myperiod[0] = 3; myperiod[1] = 7; myperiod[2] = 13; myperiod[3] = 21; myperiod[4] = 56; myperiod[5] = 233; myperiod[6] = 610; myperiod[7] = 843; myperiod[8] = 1253; //int ; string subsignal = ""; string ctext = "\n\n\n\n"; for(int i=0; i<7; i++) { subsignal = subsignal + "|M:"+(string)mytimeframe[i] + "|"; ctext = ctext + "\n" + (string)mytimeframe[i] + "\n"; for(int j=0; j<7; j++) { //mm1 = iMA(_Symbol,mytimeframe[i],myperiod[j],0,MODE_LWMA,MODE_CLOSE); //CopyBuffer(mm1,0,0,1,ma1); mm2 = iMA(_Symbol,mytimeframe[i],myperiod[j],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+1],0,MODE_LWMA,MODE_CLOSE)); CopyBuffer(mm2,0,0,1,ma2); mm3 = iMA(_Symbol,mytimeframe[i],myperiod[j],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+1],0,MODE_LWMA,iMA(_Symbol,mytimeframe[i],myperiod[j+2],0,MODE_LWMA,MODE_CLOSE))); CopyBuffer(mm3,0,0,1,ma3); if(ma2[0]>ma3[0]) { trend[i,j]="L"; } if(ma2[0]1.00) { theMax[i]=CheckValue; theMaxTicker[i]=0.0; } if(theMin[i]>=CheckValue&&routermin<1.01&&routermin>1.00) { theMin[i]=CheckValue; theMinTicker[i]=0.0; } theMaxTicker[i] = theMaxTicker[i] + 1.00; theMinTicker[i] = theMinTicker[i] + 1.00; theTickDifference[i] = theMinTicker[i] - theMaxTicker[i]; } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double thePrice(string thePair) { double xturn = (theAsk(thePair) + theBid(thePair))/2.00; return(xturn); } //+------------------------------------------------------------------+ //+ NETTING CALCULATIONS //+------------------------------------------------------------------+ void CalculateNettings() { for(int i=0; i<28; i++) { double thePriceNow = thePrice(myAllPairs[i]);// (theAsk(myAllPairs[i]) + theBid(myAllPairs[i]))/2.00; double checkPrice = (theLastestAsk[i] + theLastestBid[i])/2.0; double checkRate = checkPrice/thePriceNow; if((checkRate>1.01||checkRate<0.99)&&theLastestAsk[i]!=0.0&&theLastestBid[i]!=0.0) { thePriceNow=checkPrice; } theNettingTotal[i] = theNettingTotal[i] + thePriceNow; theNettingTickCounters[i] = theNettingTickCounters[i] + 1.00; theNet[i] = theNettingTotal[i] / theNettingTickCounters[i]; /* if(theNetFloat[i,0]!=theNet[i]) { for(int j=20;j>0;j--) { theNetFloat[i,j] = theNetFloat[i,j-1]; } theNetFloat[i,0] = theNet[i]; } theNet3[i] = 0.00; theNet7[i] = 0.00; theNet21[i] = 0.00; for(int j=0;j<21;j++) { if(j<3) { theNet3[i] = theNet3[i]+theNetFloat[i,j]; } if(j<7) { theNet7[i] = theNet7[i]+theNetFloat[i,j]; } if(j<21) { theNet21[i] = theNet21[i]+theNetFloat[i,j]; } } theNet3[i] = theNet3[i]/3.00; theNet7[i] = theNet7[i]/7.00; theNet21[i] = theNet21[i]/21.00; */ } } //+------------------------------------------------------------------+ //+ READ ASK PRICE AND ERROR CHECK //+------------------------------------------------------------------+ double theAsk(string thePair) { double read=SymbolInfoDouble(thePair,SYMBOL_ASK); if(read==0.0) { read=theLastestAsk[mySymbolId(thePair)]; Print("Read error ASK close used last: " + DoubleToString(read,8)); } if(read==0.0) { read=iClose(thePair,PERIOD_M1,1); Print("Read error ASK close used close: " + DoubleToString(read,8)); } double checkrate = theLastestAsk[mySymbolId(thePair)]/read; if(checkrate<1.001||checkrate>0.999) { theLastestAsk[mySymbolId(thePair)] = read; } if(checkrate>1.001||checkrate<0.999) { read = theLastestAsk[mySymbolId(thePair)]; }//Print("Read error BID close used previous: " + DoubleToString(read,8));} return(read); } //+------------------------------------------------------------------+ //+ READ BID PRICE AND ERROR CHECK //+------------------------------------------------------------------+ double theBid(string thePair) { double read=SymbolInfoDouble(thePair,SYMBOL_BID); if(read==0.0) { read=theLastestBid[mySymbolId(thePair)]; Print("Read error ASK close used last: " + DoubleToString(read,8)); } if(read==0.0) { read=iClose(thePair,PERIOD_M1,1); Print("Read error BID close used close: " + DoubleToString(read,8)); } double checkrate = theLastestAsk[mySymbolId(thePair)]/read; if(checkrate<1.001||checkrate>0.999) { theLastestAsk[mySymbolId(thePair)] = read; } if(checkrate>1.001||checkrate<0.999) { read = theLastestAsk[mySymbolId(thePair)]; }//Print("Read error BID close used previous: " + DoubleToString(read,8));} return(read); } //+------------------------------------------------------------------+ //+ RETURN SYMBOLS DIGIT STRING TO INTEGER //+------------------------------------------------------------------+ int mySymbolDigit(string _mySymbol) { int vpoint = 00001; //return(SymbolInfoDouble(_mySymbol,SYMBOL_POINT)); if(_mySymbol==myAllPairs[EURUSD]) { vpoint=5; } if(_mySymbol==myAllPairs[GBPUSD]) { vpoint=5; } if(_mySymbol==myAllPairs[AUDUSD]) { vpoint=5; } if(_mySymbol==myAllPairs[USDJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[USDCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[USDCAD]) { vpoint=5; } if(_mySymbol==myAllPairs[EURAUD]) { vpoint=5; } if(_mySymbol==myAllPairs[EURCAD]) { vpoint=5; } if(_mySymbol==myAllPairs[EURCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[EURGBP]) { vpoint=5; } if(_mySymbol==myAllPairs[EURJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[GBPJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[GBPCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[NZDUSD]) { vpoint=5; } if(_mySymbol==myAllPairs[AUDCAD]) { vpoint=5; } if(_mySymbol==myAllPairs[AUDJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[CHFJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[AUDNZD]) { vpoint=5; } if(_mySymbol==myAllPairs[NZDJPY]) { vpoint=2; } if(_mySymbol==myAllPairs[NZDCAD]) { vpoint=5; } if(_mySymbol==myAllPairs[NZDCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[GBPNZD]) { vpoint=5; } if(_mySymbol==myAllPairs[EURNZD]) { vpoint=5; } if(_mySymbol==myAllPairs[GBPCAD]) { vpoint=5; } if(_mySymbol==myAllPairs[GBPAUD]) { vpoint=5; } if(_mySymbol==myAllPairs[AUDCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[CADCHF]) { vpoint=5; } if(_mySymbol==myAllPairs[CADJPY]) { vpoint=3; } if(_mySymbol==myAllPairs[XAUUSD]) { vpoint=2; } if(_mySymbol==myAllPairs[GOLD]) { vpoint=2; } return(vpoint); } //+------------------------------------------------------------------+ //+ RETURN SYMBOL ID STRING TO INTEGER //+------------------------------------------------------------------+ int mySymbolId(string _mySymbol) { int vpoint = 00001; //return(SymbolInfoDouble(_mySymbol,SYMBOL_POINT)); if(_mySymbol==myAllPairs[EURUSD]) { vpoint=EURUSD; } if(_mySymbol==myAllPairs[GBPUSD]) { vpoint=GBPUSD; } if(_mySymbol==myAllPairs[AUDUSD]) { vpoint=AUDUSD; } if(_mySymbol==myAllPairs[USDJPY]) { vpoint=USDJPY; } if(_mySymbol==myAllPairs[USDCHF]) { vpoint=USDCHF; } if(_mySymbol==myAllPairs[USDCAD]) { vpoint=USDCAD; } if(_mySymbol==myAllPairs[EURAUD]) { vpoint=EURAUD; } if(_mySymbol==myAllPairs[EURCAD]) { vpoint=EURCAD; } if(_mySymbol==myAllPairs[EURCHF]) { vpoint=EURCHF; } if(_mySymbol==myAllPairs[EURGBP]) { vpoint=EURGBP; } if(_mySymbol==myAllPairs[EURJPY]) { vpoint=EURJPY; } if(_mySymbol==myAllPairs[GBPJPY]) { vpoint=GBPJPY; } if(_mySymbol==myAllPairs[GBPCHF]) { vpoint=GBPCHF; } if(_mySymbol==myAllPairs[NZDUSD]) { vpoint=NZDUSD; } if(_mySymbol==myAllPairs[AUDCAD]) { vpoint=AUDCAD; } if(_mySymbol==myAllPairs[AUDJPY]) { vpoint=AUDJPY; } if(_mySymbol==myAllPairs[CHFJPY]) { vpoint=CHFJPY; } if(_mySymbol==myAllPairs[AUDNZD]) { vpoint=AUDNZD; } if(_mySymbol==myAllPairs[NZDJPY]) { vpoint=NZDJPY; } if(_mySymbol==myAllPairs[NZDCAD]) { vpoint=NZDCAD; } if(_mySymbol==myAllPairs[NZDCHF]) { vpoint=NZDCHF; } if(_mySymbol==myAllPairs[GBPNZD]) { vpoint=GBPNZD; } if(_mySymbol==myAllPairs[EURNZD]) { vpoint=EURNZD; } if(_mySymbol==myAllPairs[GBPCAD]) { vpoint=GBPCAD; } if(_mySymbol==myAllPairs[GBPAUD]) { vpoint=GBPUSD; } if(_mySymbol==myAllPairs[AUDCHF]) { vpoint=AUDCHF; } if(_mySymbol==myAllPairs[CADCHF]) { vpoint=CADCHF; } if(_mySymbol==myAllPairs[CADJPY]) { vpoint=CADJPY; } if(_mySymbol==myAllPairs[XAUUSD]) { vpoint=XAUUSD; } if(_mySymbol==myAllPairs[GOLD]) { vpoint=GOLD; } return(vpoint); } //+------------------------------------------------------------------+ //+ LOAD PAIRS LABELS WITH SUFFIX //+------------------------------------------------------------------+ void CallPairs() { myAllPairs[0]=_Symbol;//"EURUSD"+MyTradeSuffix; myAllPairs[1]="GBPUSD"+MyTradeSuffix; myAllPairs[2]="AUDUSD"+MyTradeSuffix; myAllPairs[3]="USDJPY"+MyTradeSuffix; myAllPairs[4]="USDCHF"+MyTradeSuffix; myAllPairs[5]="USDCAD"+MyTradeSuffix; myAllPairs[6]="EURAUD"+MyTradeSuffix; myAllPairs[7]="EURCAD"+MyTradeSuffix; myAllPairs[8]="EURCHF"+MyTradeSuffix; myAllPairs[9]="EURGBP"+MyTradeSuffix; myAllPairs[10]="EURJPY"+MyTradeSuffix; myAllPairs[11]="GBPJPY"+MyTradeSuffix; myAllPairs[12]="GBPCHF"+MyTradeSuffix; myAllPairs[13]="NZDUSD"+MyTradeSuffix; myAllPairs[14]="AUDCAD"+MyTradeSuffix; myAllPairs[15]="AUDJPY"+MyTradeSuffix; myAllPairs[16]="CHFJPY"+MyTradeSuffix; myAllPairs[17]="AUDNZD"+MyTradeSuffix; myAllPairs[18]="NZDJPY"+MyTradeSuffix; myAllPairs[19]="NZDCAD"+MyTradeSuffix; myAllPairs[20]="NZDCHF"+MyTradeSuffix; myAllPairs[21]="GBPNZD"+MyTradeSuffix; myAllPairs[22]="EURNZD"+MyTradeSuffix; myAllPairs[23]="GBPCAD"+MyTradeSuffix; myAllPairs[24]="GBPAUD"+MyTradeSuffix; myAllPairs[25]="AUDCHF"+MyTradeSuffix; myAllPairs[26]="CADCHF"+MyTradeSuffix; myAllPairs[27]="CADJPY"+MyTradeSuffix; myAllPairs[28]="XAUUSD"+MyTradeSuffix; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getprofitbyticket(ulong ticketid) { int total=PositionsTotal(); ulong position_ticket= (ulong)PositionGetTicket((int)ticketid); double position_profit=PositionGetDouble(POSITION_PROFIT)-MathAbs(PositionGetDouble(POSITION_SWAP)); return(position_profit); } //+------------------------------------------------------------------+ //+ TRADE INFORMATION + //+------------------------------------------------------------------+ void TradeInfo() { int total=PositionsTotal(); for(int kl=0; kl0.00) { MTTotalGProfit=MTTotalGProfit+position_profit; } if(position_profit<0.00) { MTTotalGLost=MTTotalGLost+position_profit; } } if(position_symbol==myAllPairs[j]&&POSITION_TYPE_SELL==type&&magic==magicNumber) { MTSellCounts[j]=MTSellCounts[j]+1.00; MTSellProfit[j]=MTSellProfit[j]+position_profit; MTSellVolume[j]=MTSellVolume[j]+position_size; MTTotalSellProfit=MTTotalSellProfit+position_profit; if(position_profit>0.00) { MTTotalGProfit=MTTotalGProfit+position_profit; } if(position_profit<0.00) { MTTotalGLost=MTTotalGLost+position_profit; } } } } } //+------------------------------------------------------------------+ //+-------------------------------------------------------------------------+ //+ TRADE FUNCTIONS //+-------------------------------------------------------------------------+ //+ESKI KODLAR ------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void Sell(double _volume=0.01,string _symbol="EURUSD",string _CommentSellProfit="0.00") { double volume=_volume; //string symbol=_symbol; string symbol=_symbol; int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); double SL=SetStopLoss(ORDER_TYPE_SELL); SL=NormalizeDouble(SL,digits); double TP=SetTakeProffit(ORDER_TYPE_SELL); TP=NormalizeDouble(TP,digits); double open_price=SymbolInfoDouble(symbol,SYMBOL_BID); string comment=StringFormat("SELL %s %G lots at %s, SL=%s TP=%s", symbol,volume, DoubleToString(open_price,digits), DoubleToString(SL,digits), DoubleToString(TP,digits)); //comment = magicNumber + " " + comment; comment = _CommentSellProfit; //Print(comment); operationStopLoss=SL; operationTakeProffit=TP; operationPrice=open_price; objTrade.SetExpertMagicNumber(magicNumber); numberBarsOpenPosition=Bars(Symbol(),PERIOD_CURRENT); bool canSell=objTrade.Sell(volume,symbol,open_price,SL,TP,comment); if(!canSell) { //--- mensaje de error /*Print("Fail Sell() method. Return code=",objTrade.ResultRetcode(), ". error message: ",objTrade.ResultRetcodeDescription());*/ } //Sleep(8000); } //+------------------------------------------------------------------+ void Buy(double _volume=0.01,string _symbol="EURUSD", string _CommentBuyProfit="0.00") { double volume=_volume; //string symbol=_symbol; string symbol=_symbol; int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); double SL=SetStopLoss(ORDER_TYPE_BUY); SL=NormalizeDouble(SL,digits); double TP=SetTakeProffit(ORDER_TYPE_BUY); TP=NormalizeDouble(TP,digits); double open_price=SymbolInfoDouble(symbol,SYMBOL_ASK); string comment=StringFormat("BUY %s %G lots at %s, SL=%s TP=%s", symbol,volume, DoubleToString(open_price,digits), DoubleToString(SL,digits), DoubleToString(TP,digits)); //comment = magicNumber + " " + comment; comment = _CommentBuyProfit; //Print(comment); operationStopLoss=SL; operationTakeProffit=TP; operationPrice=open_price; objTrade.SetExpertMagicNumber(magicNumber); numberBarsOpenPosition=Bars(Symbol(),PERIOD_CURRENT); bool canBuy=objTrade.Buy(volume,symbol,open_price,SL,TP,comment); if(!canBuy) { //--- mensaje de error /*Print("Fail Buy() method. Return code=",objTrade.ResultRetcode(), ". error message: ",objTrade.ResultRetcodeDescription());*/ } //Sleep(8000); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ double SetStopLoss(ENUM_ORDER_TYPE orderType) { double sl=0.0; double _ASK = SymbolInfoDouble(Symbol(),SYMBOL_ASK); double _BID = SymbolInfoDouble(Symbol(),SYMBOL_BID); if(orderType==ORDER_TYPE_BUY) { sl=(InpStopLoss==0)?0.0:_ASK-ExtStopLoss; } else if(orderType==ORDER_TYPE_SELL) { sl=(InpStopLoss==0)?0.0:_BID+ExtStopLoss; } return(sl); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double SetTakeProffit(ENUM_ORDER_TYPE orderType) { double tp=0.0; double _ASK = SymbolInfoDouble(Symbol(),SYMBOL_ASK); double _BID = SymbolInfoDouble(Symbol(),SYMBOL_BID); if(orderType==ORDER_TYPE_BUY) { tp=(InpTakeProfit==0)?0.0:_ASK+ExtTakeProfit; } else if(orderType==ORDER_TYPE_SELL) { tp=(InpTakeProfit==0)?0.0: _BID-ExtTakeProfit; } return(tp); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int SetDigitsAdjusts(int adjustDigits=1) { int _adjustDigits=adjustDigits; int symbolDigits=objSymbol.Digits(); if(symbolDigits==3 || symbolDigits==5) _adjustDigits=10; return(_adjustDigits); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ bool CloseAllPositionsOrders() { //magicNumber=XmagicNumber; //magicNumberLevel=1; int contClosePositionFail=0; int positionsTotal=PositionsTotal(); for(int i=positionsTotal-1; i>=0; i--) { ulong ticket=PositionGetTicket(i); ulong position_ticket=PositionGetTicket(i); string position_symbol=PositionGetString(POSITION_SYMBOL); double position_profit=PositionGetDouble(POSITION_PROFIT); double position_size=PositionGetDouble(POSITION_VOLUME); ulong magic=PositionGetInteger(POSITION_MAGIC); bool restulClosePositon; restulClosePositon = false; if(magic==magicNumber) restulClosePositon=ClosePosition(ticket); if(!restulClosePositon) contClosePositionFail++; } return(contClosePositionFail>0 ?true : false); } //+------------------------------------------------------------------+ //+ CLOSE BOOL CONTROLLER + //+------------------------------------------------------------------+ bool ClosePosition(ulong ticket=0) { return objTrade.PositionClose(ticket); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myTargetPrice(double _Price1, double _TargetPips, double _SymPoint) { double _TargetPrice = _Price1 + _TargetPips * _SymPoint; return(_TargetPrice); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myPipDifference(double _Price1, double _Price2, double _SymPoint) { double _Pips=(_Price1-_Price2)/_SymPoint; double returnPips = _Pips * 1; return(returnPips); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myPipDifferenceAbsolute(double _Price1, double _Price2, double _SymPoint) { double _Pips=(_Price1-_Price2)/_SymPoint; double returnPips = MathAbs(_Pips) * 1; return(returnPips); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double mySymbolPointNew2(string _mySymbol) { double vpoint = 00001; //return(SymbolInfoDouble(_mySymbol,SYMBOL_POINT)); if(_mySymbol==myAllPairs[EURUSD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[GBPUSD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[AUDUSD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[USDJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[USDCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[USDCAD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURAUD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURCAD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURGBP]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[GBPJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[GBPCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[NZDUSD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[AUDCAD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[AUDJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[CHFJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[AUDNZD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[NZDJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[NZDCAD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[NZDCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[GBPNZD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[EURNZD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[GBPCAD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[GBPAUD]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[AUDCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[CADCHF]) { vpoint=0.00001; } if(_mySymbol==myAllPairs[CADJPY]) { vpoint=0.001; } if(_mySymbol==myAllPairs[XAUUSD]) { vpoint=0.01; } if(_mySymbol==myAllPairs[GOLD]) { vpoint=0.01; } return(vpoint); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountFullInfo() { string Info = "\nRobot Trades:"+(string)TradeControl; Info += "\nBroker:"+myAccountBroker(); Info += "\nServer:"+myAccountServer(); Info += "\nType:"+myAccountType(); Info += "\nCurrency:"+myAccountBaseCurrency(); Info += "\nOwner:"+myAccountOwner(); Info += "\nAccount ID:"+DoubleToString(myAccountId(),0); Info += "\nLeverage:"+DoubleToString(myAccountLeverage(),2); Info += "\nBalance:"+DoubleToString(myAccountBalance(),2); Info += "\nCredit:"+DoubleToString(myAccountCredit(),2); Info += "\nEquity:"+DoubleToString(myAccountEquity(),2); Info += "\nProfit:"+DoubleToString(myAccountProfit(),2); Info += "\nMargin:"+DoubleToString(myAccountMargin(),2); Info += "\nMarginFree:"+DoubleToString(myAccountMarginFree(),2); return(Info); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountMarginFree() { return(AccountInfoDouble(ACCOUNT_MARGIN_FREE)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountMargin() { return(AccountInfoDouble(ACCOUNT_MARGIN)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountBroker() { return(AccountInfoString(ACCOUNT_COMPANY)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountBaseCurrency() { return(AccountInfoString(ACCOUNT_CURRENCY)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountOwner() { return(AccountInfoString(ACCOUNT_NAME)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountServer() { return(AccountInfoString(ACCOUNT_SERVER)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ ulong myAccountLeverage() { return(AccountInfoInteger(ACCOUNT_LEVERAGE)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ ulong myAccountId() { return(AccountInfoInteger(ACCOUNT_LOGIN)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountBalance() { return(AccountInfoDouble(ACCOUNT_BALANCE)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountCredit() { return(AccountInfoDouble(ACCOUNT_CREDIT)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountEquity() { return(AccountInfoDouble(ACCOUNT_EQUITY)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double myAccountProfit() { return(AccountInfoDouble(ACCOUNT_PROFIT)); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string myAccountType() { ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE); //--- Now transform the value of the enumeration into an understandable form string trade_mode; switch(account_type) { case ACCOUNT_TRADE_MODE_DEMO: trade_mode="demo"; break; case ACCOUNT_TRADE_MODE_CONTEST: trade_mode="contest"; break; default: trade_mode="real"; break; } return(trade_mode); } //+------------------------------------------------------------------+ //| Request trade history | //+------------------------------------------------------------------+ void RequestTradeHistorybyMagicbyProfit() { //--- request trade history //theHistoryProfit = 0.0; //Print("A:"); HistorySelect(Get_history_from_date,Get_history_to_date); uint total_deals=HistoryDealsTotal(); ulong ticket_history_deal=0; ulong x_ticket_history_deal = 0; //--- for all deals //Print("B:"+total_deals); for(uint i=0; i0) { //Print("C:"+ticket_history_deal); long deal_ticket =HistoryDealGetInteger(ticket_history_deal,DEAL_TICKET); long deal_order =HistoryDealGetInteger(ticket_history_deal,DEAL_ORDER); long deal_time =HistoryDealGetInteger(ticket_history_deal,DEAL_TIME); long deal_time_msc =HistoryDealGetInteger(ticket_history_deal,DEAL_TIME_MSC); long deal_type =HistoryDealGetInteger(ticket_history_deal,DEAL_TYPE); long deal_entry =HistoryDealGetInteger(ticket_history_deal,DEAL_ENTRY); long deal_magic =HistoryDealGetInteger(ticket_history_deal,DEAL_MAGIC); long deal_reason =HistoryDealGetInteger(ticket_history_deal,DEAL_REASON); long deal_position_id =HistoryDealGetInteger(ticket_history_deal,DEAL_POSITION_ID); double deal_volume =HistoryDealGetDouble(ticket_history_deal,DEAL_VOLUME); double deal_price =HistoryDealGetDouble(ticket_history_deal,DEAL_PRICE); double deal_commission =HistoryDealGetDouble(ticket_history_deal,DEAL_COMMISSION); double deal_swap =HistoryDealGetDouble(ticket_history_deal,DEAL_SWAP); double deal_profit =HistoryDealGetDouble(ticket_history_deal,DEAL_PROFIT); if(deal_profit!=0.0&&magicNumber==deal_magic) { theHistoryProfit=theHistoryProfit+deal_profit; theHistoryCounter=theHistoryCounter+1; } //if(deal_profit==0.00)Print(">"+deal_order); x_ticket_history_deal=0; if(deal_profit==0.0&&magicNumber==deal_magic) { //Print("C:"+ticket_history_deal); for(uint k=0; k0) { long x_deal_ticket =HistoryDealGetInteger(x_ticket_history_deal,DEAL_TICKET); long x_deal_order =HistoryDealGetInteger(x_ticket_history_deal,DEAL_ORDER); long x_deal_position_id =HistoryDealGetInteger(x_ticket_history_deal,DEAL_POSITION_ID); long x_deal_reason =HistoryDealGetInteger(x_ticket_history_deal,DEAL_REASON); double x_deal_profit =HistoryDealGetDouble(x_ticket_history_deal,DEAL_PROFIT); if(x_deal_position_id==deal_position_id&&x_deal_reason==0) { theHistoryProfit=theHistoryProfit+x_deal_profit; theHistoryCounter=theHistoryCounter+1; } //if(x_deal_position_id==deal_position_id)Print(deal_position_id+">>"+x_deal_reason+"|"+x_deal_profit); //Print(">>>"+x_deal_ticket + "|"+deal_order); } } } string deal_symbol =HistoryDealGetString(ticket_history_deal,DEAL_SYMBOL); string deal_comment =HistoryDealGetString(ticket_history_deal,DEAL_COMMENT); string deal_external_id =HistoryDealGetString(ticket_history_deal,DEAL_EXTERNAL_ID); string time=TimeToString((datetime)deal_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS); string type=EnumToString((ENUM_DEAL_TYPE)deal_type); string entry=EnumToString((ENUM_DEAL_ENTRY)deal_entry); string str_deal_reason=EnumToString((ENUM_DEAL_REASON)deal_reason); long digits=5; if(deal_symbol!="" && deal_symbol!=NULL) { if(SymbolSelect(deal_symbol,true)) digits=SymbolInfoInteger(deal_symbol,SYMBOL_DIGITS); } //--- string text=""; /* if(deal_magic==999) { text="Deal:"; Print(deal_entry); Print(text); text=StringFormat("%-20s %-20s %-20s %-20s %-20s %-20s %-20s %-20s %-20s", "|Ticket","|Order","|Time","|Time msc","|Type","|Entry","|Magic","|Reason","|Position ID"); Print(text); text=StringFormat("|%-19d |%-19d |%-19s |%-19I64d |%-19s |%-19s |%-19d |%-19s |%-19d" ,deal_ticket,deal_order,time,deal_time_msc,type,entry,deal_magic,str_deal_reason,deal_position_id); Print(text); text=StringFormat("%-20s %-20s %-20s %-20s %-20s %-20s %-41s %-20s", "|Volume","|Price","|Commission","|Swap","|Profit","|Symbol","|Comment","|External ID"); Print(text); text=StringFormat("|%-19.2f |%-19."+IntegerToString(digits)+"f |%-19.2f |%-19.2f |%-19.2f |%-19s |%-40s |%-19s", deal_volume,deal_price,deal_commission,deal_swap,deal_profit,deal_symbol,deal_comment,deal_external_id); Print(text); theHistoryProfit=theHistoryProfit+deal_profit; } */ //--- try to get oeders ticket_history_order if(HistoryOrderSelect(deal_order)) { long o_ticket =HistoryOrderGetInteger(deal_order,ORDER_TICKET); long o_time_setup =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP); long o_type =HistoryOrderGetInteger(deal_order,ORDER_TYPE); long o_state =HistoryOrderGetInteger(deal_order,ORDER_STATE); long o_time_expiration =HistoryOrderGetInteger(deal_order,ORDER_TIME_EXPIRATION); long o_time_done =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE); long o_time_setup_msc =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP_MSC); long o_time_done_msc =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE_MSC); long o_type_filling =HistoryOrderGetInteger(deal_order,ORDER_TYPE_FILLING); long o_type_time =HistoryOrderGetInteger(deal_order,ORDER_TYPE_TIME); long o_magic =HistoryOrderGetInteger(deal_order,ORDER_MAGIC); long o_reason =HistoryOrderGetInteger(deal_order,ORDER_REASON); long o_position_id =HistoryOrderGetInteger(deal_order,ORDER_POSITION_ID); long o_position_by_id =HistoryOrderGetInteger(deal_order,ORDER_POSITION_BY_ID); double o_volume_initial =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_INITIAL); double o_volume_current =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_CURRENT); double o_open_price =HistoryOrderGetDouble(deal_order,ORDER_PRICE_OPEN); double o_sl =HistoryOrderGetDouble(deal_order,ORDER_SL); double o_tp =HistoryOrderGetDouble(deal_order,ORDER_TP); double o_price_current =HistoryOrderGetDouble(deal_order,ORDER_PRICE_CURRENT); double o_price_stoplimit =HistoryOrderGetDouble(deal_order,ORDER_PRICE_STOPLIMIT); //double o_profit = HistoryOrderGetDouble(deal_order,ORDER); string o_symbol =HistoryOrderGetString(deal_order,ORDER_SYMBOL); string o_comment =HistoryOrderGetString(deal_order,ORDER_COMMENT); string o_extarnal_id =HistoryOrderGetString(deal_order,ORDER_EXTERNAL_ID); string str_o_time_setup =TimeToString((datetime)o_time_setup,TIME_DATE|TIME_MINUTES|TIME_SECONDS); string str_o_type =EnumToString((ENUM_ORDER_TYPE)o_type); string str_o_state =EnumToString((ENUM_ORDER_STATE)o_state); string str_o_time_expiration =TimeToString((datetime)o_time_expiration,TIME_DATE|TIME_MINUTES|TIME_SECONDS); string str_o_time_done =TimeToString((datetime)o_time_done,TIME_DATE|TIME_MINUTES|TIME_SECONDS); string str_o_type_filling =EnumToString((ENUM_ORDER_TYPE_FILLING)o_type_filling); string str_o_type_time =TimeToString((datetime)o_type_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS); string str_o_reason =EnumToString((ENUM_ORDER_REASON)o_reason); text="Order:"; //OutputTest(text); text=StringFormat("%-20s %-20s %-20s %-20s %-20s %-20s %-20s %-20s %-20s", "|Ticket","|Time setup","|Type","|State","|Time expiration", "|Time done","|Time setup msc","|Time done msc","|Type filling"); //OutputTest(text); text=StringFormat("|%-19d |%-19s |%-19s |%-19s |%-19s |%-19s |%-19I64d |%-19I64d |%-19s", o_ticket,str_o_time_setup,str_o_type,str_o_state,str_o_time_expiration,str_o_time_done, o_time_setup_msc,o_time_done_msc,str_o_type_filling); //OutputTest(text); text=StringFormat("%-20s %-20s %-20s %-20s %-20s", "|Type time","|Magic","|Reason","|Position id","|Position by id"); //OutputTest(text); text=StringFormat("|%-19s |%-19d |%-19s |%-19d |%-19d", str_o_type_time,o_magic,str_o_reason,o_position_id,o_position_by_id); //OutputTest(text); text=StringFormat("%-20s %-20s %-20s %-20s %-20s %-20s %-20s", "|Volume initial","|Volume current","|Open price","|sl","|tp","|Price current","|Price stoplimit"); //OutputTest(text); text=StringFormat("|%-19.2f |%-19.2f |%-19."+IntegerToString(digits)+"f |%-19."+IntegerToString(digits)+ "f |%-19."+IntegerToString(digits)+"f |%-19."+IntegerToString(digits)+ "f |%-19."+IntegerToString(digits)+"f", o_volume_initial,o_volume_current,o_open_price,o_sl,o_tp,o_price_current,o_price_stoplimit); //OutputTest(text); text=StringFormat("%-20s %-41s %-20s","|Symbol","|Comment","|Extarnal id"); //OutputTest(text); text=StringFormat("|%-19s |%-40s |%-19s",o_symbol,o_comment,o_extarnal_id); //OutputTest(text); int d=0; } else { text="Order "+IntegerToString(deal_order)+" is not found in the trade history between the dates "+ TimeToString(Get_history_from_date,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" and "+ TimeToString(Get_history_to_date,TIME_DATE|TIME_MINUTES|TIME_SECONDS); //OutputTest(text); } text=""; //OutputTest(text); int d=0; } } //--- /* if(InpOutput==txt_file) FileClose(file_handle); */ //return(theHistoryProfit); } //----------------------------------------------------------------------+ void Cizikle44(string name, string text, int xdistance,int ydistance) { long cid=ChartID(); ResetLastError(); ObjectDelete(cid,name); ObjectCreate(cid,name,OBJ_LABEL,0,0,0,0,0,0,0); ObjectSetString(cid,name,OBJPROP_TEXT,text); ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,xdistance); ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,ydistance); ObjectSetInteger(cid,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(cid,name,OBJPROP_COLOR,clrGold); ObjectSetInteger(cid,name,OBJPROP_FILL,clrBlack); ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,15); ObjectSetInteger(cid,name,OBJPROP_WIDTH,8); } //----------------------------------------------------------------------+ void Cizikle4(string name, string text, int xdistance,int ydistance) { long cid=ChartID(); ResetLastError(); ObjectDelete(cid,name); ObjectCreate(cid,name,OBJ_LABEL,0,0,0,0,0,0,0); ObjectSetString(cid,name,OBJPROP_TEXT,text); ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,xdistance); ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,ydistance); ObjectSetInteger(cid,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(cid,name,OBJPROP_COLOR,clrGold); ObjectSetInteger(cid,name,OBJPROP_FILL,clrBlack); ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,15); ObjectSetInteger(cid,name,OBJPROP_WIDTH,8); } //----------------------------------------------------------------------+ void Cizikle5(string name, string text, int xdistance,int ydistance) { long cid=ChartID(); ResetLastError(); ObjectDelete(cid,name); ObjectCreate(cid,name,OBJ_LABEL,0,0,0,0,0,0,0); ObjectSetString(cid,name,OBJPROP_TEXT,text); ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,xdistance); ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,ydistance); ObjectSetInteger(cid,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(cid,name,OBJPROP_COLOR,clrGold); ObjectSetInteger(cid,name,OBJPROP_FILL,clrBlack); ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,8); ObjectSetInteger(cid,name,OBJPROP_WIDTH,4); }