MnQInvestmentDevelopment/MnQInvestment/01_Amadeus/AMA-DEUSDEUSDEUS-2.mq5

144 lines
10 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 15:08:44 +02:00
<EFBFBD><EFBFBD>#property copyright "Copyright 2023, M & Q Investment Group"
#property link "https://www.mql5.com"
#property version "1.00"
#include <trade/trade.mqh>
CTrade trade;
//-------------------------------------------BASIC VERSION BEFORE TESTING-------------
input double TrigPDif = 0.00005;
//input double SLDif = 0.001;
//input double TPDif = 0.001;
input double LotS = 1.0;
input int ExpiryTime = 120;
input int TickTolerance = 5;
input double TickToleranceTolerance = 0.7;
input double PufferDistance = 0.0001;
input string Opentime = "07:30:00";
input string CloseTime = "23:00";
double TickStreakCountDown = 0;
double TickStreakCountUp = 0;
//bool OrderinAction;
//double bid1 = 0;
double bid0 = 0;
double accountbalancebeginning;
double accountprofit;
int OnInit(){
accountbalancebeginning = AccountInfoDouble(ACCOUNT_BALANCE);
//OrderinAction = false;
return(INIT_SUCCEEDED);
}
void OnTick(){
//DETERMINING TIMEFRAME
datetime opentimenow = StringToTime(Opentime);
datetime closetimenow = StringToTime(CloseTime);
datetime currenttime = TimeCurrent();
if(currenttime > opentimenow && currenttime < closetimenow){
//GET PINK AMA VALUES
double PinkAMAPriceArray[];
int PinkAMADefinition = iAMA (_Symbol,_Period,1,1,20,0,PRICE_CLOSE);
ArraySetAsSeries(PinkAMAPriceArray,true);
//AMA DEF, one line, current candle, 3 candles, store result
CopyBuffer(PinkAMADefinition,0,0,TickTolerance*2,PinkAMAPriceArray);
double PinkAMACurrentValue = NormalizeDouble(PinkAMAPriceArray[0],6);
//GET YELLWOW AMA VALUES
double YellAMAPriceArray[];
int YellAMADefinition = iAMA (_Symbol,_Period,2,5,1,0,PRICE_CLOSE);
ArraySetAsSeries(YellAMAPriceArray,true);
//AMA DEF, one line, current candle, 3 candles, store result
CopyBuffer(YellAMADefinition,0,0,TickTolerance*2,YellAMAPriceArray);
double YellAMACurrentValue = NormalizeDouble(YellAMAPriceArray[0],6);
//GET RED AMA VALUES
double RedAMAPriceArray[];
int RedAMADefinition = iAMA (_Symbol,_Period,5,2,30,0,PRICE_CLOSE);
ArraySetAsSeries(RedAMAPriceArray,true);
//AMA DEF, one line, current candle, 3 candles, store result
CopyBuffer(RedAMADefinition,0,0,TickTolerance*2,RedAMAPriceArray);
double RedAMACurrentValue = NormalizeDouble(RedAMAPriceArray[0],6);
//FIND THE TRIGGER
bool GehRinDoJetztDown = false;
bool GehRinDoJetztUp = false;
double CheckTicks = TickTolerance * TickToleranceTolerance;
//OBENDR<EFBFBD>BER
for(int i = (TickTolerance*2) - 1; i > TickTolerance - 1; i--){
if(PinkAMAPriceArray[i] > YellAMAPriceArray[i]){
TickStreakCountUp = TickStreakCountUp + 1;
}
}
if(TickStreakCountUp > CheckTicks){
GehRinDoJetztUp = true;
TickStreakCountUp = 0;
}
//UNTENDRUNTER
for(int i = 0; i < TickTolerance; i++){
if(PinkAMAPriceArray[i] < YellAMAPriceArray[i]){
TickStreakCountDown = TickStreakCountDown + 1;
}
}
if(TickStreakCountDown > CheckTicks){
GehRinDoJetztDown = true;
TickStreakCountDown = 0;
}
//SET THE ORDER
//bid1 = bid0;
bid0 = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
double PufferPrice = RedAMACurrentValue + PufferDistance;
if(GehRinDoJetztDown == true && GehRinDoJetztUp == true && YellAMACurrentValue > PufferPrice && PositionsTotal() == 0 && OrdersTotal() == 0){
double TrigP = bid0 - TrigPDif;
double TP = RedAMACurrentValue;
double SL = bid0 + (YellAMACurrentValue - RedAMACurrentValue);
datetime OrderExpTime = TimeCurrent() + ExpiryTime;
trade.SellStop(LotS,TrigP,_Symbol,SL,TP,ORDER_TIME_SPECIFIED,OrderExpTime);
Print("Bidprice: ", bid0,
"\n Current Pink: ", PinkAMACurrentValue,
"\n Current Yellow: ", YellAMACurrentValue,
"\n Current Red: ", RedAMACurrentValue);
}
/*/DELETE ORDER
if(bid0 >= AMAPriceArray[0] - TrigPDif && OrderinAction == true){
ulong Positionticket = PositionGetTicket(0);
trade.OrderDelete(Positionticket);
}*/
// DISPLAY OF VALUES ON CHART
double accountbalance = AccountInfoDouble(ACCOUNT_BALANCE);
double accountequity = AccountInfoDouble(ACCOUNT_EQUITY);
accountprofit = accountequity - accountbalancebeginning;
accountprofit = NormalizeDouble(accountprofit,2);
Comment("\nServertime: ", TimeCurrent(),
"\nCurrenttime: ",TimeCurrent(),
"\nProfit: ",accountprofit,
"\nEquity: ",accountequity,
"\nPinkAMA-Value ",PinkAMACurrentValue,
"\nYellAMA-Value ",YellAMACurrentValue,
"\nRedAMA-Value ",RedAMACurrentValue);
}//END TIMEFRAME
}//END ONTICK