[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Why is not sold



PureBytes Links

Trading Reference Links

Why is the position not on the same bar closed?

It will be purchased and if the exit on the same day the position is always open

1

//UmkehrstabTrading

//Grundinstellungen----------------------------------------------------------------------

SetFormulaName ("UmkehrstabTradingB"); // name für den backtest

//SetBarsRequired( 10000, 0 );
SetOption( "AccountMargin", 100 ); // Keine Margin
//SetOption( "ActivateStopsImmediately", True );
//SetOption( "AllowPositionShrinking", False );
//SetOption( "AllowSameBarExit", True );
//SetOption( "CommissionAmount", 1.00 );
//SetOption( "CommissionMode", 2 );
//SetOption( "FuturesMode", 1 );
SetOption( "InitialEquity", 10000 ); // Startkapital
//SetOption( "InterestRate", 0 );
SetOption( "MaxOpenPositions", 1000 ); // Maximale Offenen Positionen
SetOption( "MinPosValue", 0 ); // Minimaler Betrag
SetOption( "MinShares", 1 ); // Minimale Anzahl ?
//SetOption( "PriceBoundChecking", True );
//SetOption( "ReverseSignalForcesExit", False );
//SetOption( "UsePrevBarEquityForPosSizing", False );
SetTradeDelays( 0, 0, 0, 0 );
SetPositionSize( 1, spsShares ); // Menge die gekauft wird

RoundLotSize = 0; //Positionen sollen immer aus ganzzahligen Shares bestehen(1,2,3,x)


//Positionsgröße-------------------------------------------------------------------------

Risiko = 15 ; //risiko auf das depot
RisikoimWert = Ref (ATR(1),-1) ; // risiko im wert
PositionSize = ( Risiko / RisikoimWert) * BuyPrice;


//Fremde Programme------------------------------------------------------------------------
#include "Formulas\Systems\stochstoch9010.afl"

//VAriabelen------------------------------------------------------------------------------

stFaktor = 1;
//stFaktor = Optimize( "StoppFaktor",1, 0.5 , 2.5, 0.1 );
tpFaktor = Optimize( "TakeProfitFaktor", 2, 0.5 , 3, 0.1 );

slARRAY = Null;  //  für die Darstellung im Chart
tpARRAY = Null;  //  für die Darstellung im Chart
StopLos = 0;    
TakeProfit = 0;

PeriodeEMA = 12 ;

xBars = 15; // Tage nach denen verkauft wird
ATR10 = ATR(10);



//AllgemeineAbfragen---------------------------------------------------------------------

//Abfage auf dojis

Korper =  abs( O - C);
Kerze =  H - L ;
Doji = Korper / Kerze  < 0.10 ; //Abfrage ob ein doji, 0.10 = 10% Körper der Kerze
Plot( Doji,"Doji",colorBlue,styleBar);

// Abfrage der % veränderung = ATR10 / Close

Veränderung = ATR10 / C * 100 ;
Plot( Veränderung ,"Veränderung ",colorBlue,styleBar);

//Volumen Abfrage
Volumen = MA( V * C * 100, 5 ) > 500000  ;



// Bedingungen für Long------------------------------------------------------------------

//Trend muss steigend sein.Abgefragt über steigende Hochs.Wenn neues Hoch > letztes Hoch = 1, wenn neues Hoch < letztes Hoch = 0

steigend = Flip (Highest_Short_Stopp > Ref(Highest_Short_Stopp,-1) , Highest_Short_Stopp < Ref(Highest_Short_Stopp,-1)) ;

//Abstand letztes Swing-H – Entry > 1R
AbstandHoch = H + ATR(1) < Highest_Short_Stopp ;

//% verändreung kleiner 5%
GrosseBar = Veränderung < 3 ;

// EMA muss steigen und Close muss über EMA sein

EMALong = EMA(C,PeriodeEMA) > Ref(EMA(C,PeriodeEMA),-1) ; // Abfrage ob EMA steigt
CloseuberEMA = C > EMA(C,PeriodeEMA) ; // Abfrage ob Close > EMA
CloseGesternuberEMA =  Ref(C,-1) > Ref(EMA(C,PeriodeEMA),-1) ; // Abfrage ob Gestern auch Close über EMA

// Abfrage ob vorletztes Bar fallend war
// Wenn es ein Doji ist wird das Bar davor genommen. Was wenn das auch ein Doji ist?

Barfallend = IIf(Ref(Doji,-1), Ref(O,-2) > Ref(C,-2) , Ref(O,-1) > Ref(C,-1) ) ;

// Abfrage ob heutiges Bar steigend

Kaufbar = C > O ;

// Hoch über Hoch von Gestern
// und Tief kleiner Hoch da mit Limit Order geordert wird und keinen Gaps gekauft werden

Long = H > Ref(H,-1) AND L < Ref(H,-1);

//Kauf Auftrag
Long_C = Ref(steigend,-1) AND Ref(EMALong,-1) AND Ref(CloseuberEMA,-1) AND Ref(Barfallend,-1) AND Ref(Kaufbar,-1) AND Ref(CloseGesternuberEMA,-1)AND Ref(GrosseBar,-1) AND Volumen AND Ref(AbstandHoch,-1) AND Long ;

Buy = Long_C ;
BuyPrice = Ref(H,-1) ;

//Verkauf Long-----------------------------------------------------------------------------

//Sell = BarsSince(Buy) == xBars;
Sell = 0 ;
for( i = 1; i < BarCount; i++ )
{

//----------Aufruf nur am Anfang jedes neuen Signals, BuyPrise und ATR() wird festgelegt--------------------------------------------------------------
   if( StopLos == 0 AND Buy[ i ] )
   {
        BuyPrice = Ref(H,-1) ;

        xxx = Ref(ATR(1),-1);                                 //   xxx ist kein ARRAY
       StopLos =  BuyPrice[i] - ( xxx[i] * stFaktor );
        TakeProfit = BuyPrice[i] + ( xxx[i] * tpFaktor);
       
       
   }
   else Buy[ i ] = 0; // remove excess buy signals   >>  hat der Autor eingefügt, warum jetzt, erstmal keine Ahnung


//----------AusstoppRegel-----------------------------------------------------------------
   if( StopLos > 0 AND Low[ i ] < StopLos)              
   {                   
      Sell[ i ] = 1;
      SellPrice[ i ] = StopLos;
      StopLos = 0;
      TakeProfit =0;
   }

//--------Zum Übergeben der ST und TP -Level für die Darstellung im Chart-----------------
    if (StopLos > 0 AND Low[ i ] > StopLos AND  High[i] < TakeProfit )
    {
        slARRAY[i] = StopLos;
        tpARRAY[i] = TakeProfit;
    }
//----------GewinnZielRegel---------------------------------------------------------------
   if( TakeProfit > 0 AND High[i] > TakeProfit)
   {  
      Sell[ i ] = 1;
      SellPrice[ i ] = TakeProfit;
      StopLos = 0;
      TakeProfit =0;
   }

}

PlotShapes(Buy*shapeUpArrow,colorGreen,0,Low);
PlotShapes(Sell*shapeDownArrow,colorRed,0,High);

// Plot( Close,"Price",colorBlack,styleBar);
Plot( slARRAY,"StopLevel", colorRed );
Plot( tpARRAY,"TakeProfitLevel", colorRed );


Buy = ExRem (Buy,Sell);
Sell = ExRem(Sell,Buy);