Einzelnen Beitrag anzeigen
  #13 (permalink)  
Alt 25.07.20
MA-EA MA-EA ist offline
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Was ich meinte, ist, dass Vieles eben nicht so umgesetzt werden kann, wie ich es mir vorstelle. Das passiert doch Jedem mal...


Ich hoffe mal, dass das so funktioniert. Gibts nen anderen Weg, festzustellen, aus welcher Richtung z.B. der CCI oder ein andere Oszillator oder Indikator oder was auch immer kommt? Das würde bestimmt so manches Fehlsignal vermeiden.

Man könnte vielleicht versuchen, festzustellen, aus welcher Richtung der Kurs kommt. Aber die Indikatoren sollen ja Diesen "filtern", und so umrechnen, dass aus dem Kursverlauf eben eindeutige Handelssignale dargestellt und erkannt werden können...
Code:
//=============================================================================================================
 // C O M M O D I T Y   C H A N N E L   I N D E X
//=============================================================================================================


double CCI=iCCI(Symbol(),TF_Trading,CCI_Period,CCI_Price,1);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////


// CCI down Curve

int CCI_Bar_do=2;
double CCI_do=iCCI(Symbol(),TF_Trading,CCI_Period,CCI_Price, CCI_Bar_do );

// Wenn "normaler" CCI kleiner als obere Linie ist, und CCI_do(Bar2) größer als "normaler" CCI ist...
if( CCI<CCI_IL_2 && CCI_do>CCI ){

// und CCI_do (noch Bar2) auch kleiner als obere Linie ist, soll Kerze des CCI_Bar_do um 1 erhöht werden,
// bis er nicht mehr kleiner als die obere Linie ist.
  if( CCI_do<CCI_IL_2 )CCI_Bar_do++;}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


// CCI up Curve

int CCI_Bar_up=2;
double CCI_up=iCCI(Symbol(),TF_Trading,CCI_Period,CCI_Price, CCI_Bar_up );

// Wenn "normaler" CCI größer als untere Linie ist, und CCI_up(Bar2) kleiner als "normaler" CCI ist...
if( CCI>CCI_IL_1 && CCI_up<CCI ){

// und CCI_up (noch Bar2) auch größer als untere Linie ist, soll Kerze des CC_Bar_up um 1 erhöht werden,
// bis er nicht mehr größer als die untere Linie ist.
   if( CCI_up>CCI_IL_1 )CCI_Bar_up++;}
Code:
//=============================================================================================================
// O P E N   O R D E R S
//=============================================================================================================

if(iT_Tr==iT_NB){

  if(Hour()>=From_Hour&&Minute()>=From_Min&&Hour()<=Till_Hour&&Minute()<=Till_Min){
  
    double SPR=Ask-Bid; //aktueller Spread
    if(NormalizeDouble(SPR<=Max_Spr*_Point,_Digits)){

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

      bool SH=false;
      bool LO=false;
      for(int i=OrdersTotal()-1;i>=0;i--){
        if(OrderSelect(i,SELECT_BY_POS)){
          if(OrderSymbol()==Symbol()){
            if(OrderMagicNumber()==MN_Sel)SH=true;
            if(OrderMagicNumber()==MN_Buy)LO=true;}}}
            
//////////////////////////////////////////////////////////////////////////////////////////////////////////////


      if(open_Sel==true&&SH==false){
    
        if( CCI<CCI_IL_2  &&CCI_do>CCI_up&&  RSI<RSI_IL_2  &&  RVI_Ma<RVI_Si  &&  WPR<WPR_IL_1 ){
    
          if(IsTradeAllowed()==true)OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL_Sel,TP_Sel,NULL,MN_Sel,Blue);
          if(IsTradeContextBusy()==true)Sleep(Sl_MS);
          
          Print( "Sended Sel:", "-CCI_do=",CCI_do , "-CCI_up=",CCI_up , "-CCI_Bar_do=",CCI_Bar_do , "-CCI_Bar_up=",CCI_Bar_up );
          
          CCI_Bar_do=2;
         
          CCI_Bar_up=2;
          
          Print( "Sended Sel:", "-CCI_Bar_do=",CCI_Bar_do , "-CCI_Bar_up=",CCI_Bar_up );
          
          }}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////


      if(open_Buy==true&&LO==false){
    
        if( CCI>CCI_IL_1  &&CCI_up>CCI_do&&  RSI>RSI_IL_1  &&  RVI_Ma>RVI_Si  &&  WPR>WPR_IL_2 ){

          if(IsTradeAllowed()==true)OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL_Buy,TP_Buy,NULL,MN_Buy,Blue);
          if(IsTradeContextBusy()==true)Sleep(Sl_MS);
          
          Print( "Sended Buy:", "-CCI_up=",CCI_up , "-CCI_do=",CCI_do , "-CCI_Bar_up=",CCI_Bar_up , "-CCI_Bar_do=",CCI_Bar_do );
          
          CCI_Bar_up=2;
          
          CCI_Bar_do=2;

          Print( "Sended Buy:", "-CCI_Bar_up=",CCI_Bar_up , "-CCI_Bar_do=",CCI_Bar_do );
          
          }}
Versucht es vielleicht mal manuell: Öffnet nen Sell und nen Buy möglichst gleichzeitig, selber Einsatz. Wenn einer davon nen bestimmten Gewinn (sagen wir mal beide Spreads + ein paar Zerquetschte) erreicht hat, schließt Ihr ihn, und öffnet in die selbe Richtung sofort wieder ne Order, dies mal aber mit höherem Einsatz. Erreicht der wieder einen Gewinn, der größer als die bisherigen Spreads und Spesen waren, macht Ihr beide dicht. Wenn der Broker und/oder MT4 es erlaubt, macht Ihr das selbe Spiel wieder von vorn.
Angehängte Dateien
Dateityp: mq4 iTime_ucdc_CCI_RSI_RVI_WPR_MT4_EA.mq4 (41,0 KB, 1x aufgerufen)