Hallo,
mir fallen zwei Punkte auf.
1)
Was mir nicht ganz einleuchtet ist die folgende Funktion:
Code:
// GRID_START_TICKET() ist die zu letzt eröffnete Pending-Order bzw. neueste Market-Order
double PREISLEVEL()
{
double PreisLevel = 0;
if(OrderSelect( GRID_START_TICKET() , SELECT_BY_TICKET , MODE_TRADES ) == false )
{
PreisLevel = NormalizeDouble( ( Ask + Bid ) / 2 , Digits );
};
if(OrderSelect( GRID_START_TICKET() , SELECT_BY_TICKET , MODE_TRADES ) == true )
{
PreisLevel = NormalizeDouble( OrderOpenPrice() , Digits );
};
return(PreisLevel);
};
Wenn die Order nicht ausgewählt werden konnte, also OrderSelect() == false ist, warum gibst du dann den aktuellen Preis wieder? Wäre dass dann nicht eher ein Moment in dem du die Erstellung des Grids abbrechen solltest?
2)
Ich sehe hier in allen UPPER LOWER und CURRENT Grid Funktionen ein Problem mit der Berechnung:
Hier dein Code:
Code:
double Grid_Upper_1_High = PREISLEVEL() + ( 1 * Grid_Abstand * Point ) + ( Grid_Abstand / 2 ) * Point;
double Grid_Upper_1_Low = PREISLEVEL() + ( 1 * Grid_Abstand * Point )-( Grid_Abstand / 2 ) * Point;
Du negierst hier nur den zweiten Teil, also "( Grid_Abstand / 2 ) * Point"
Richtig wäre hier wohl eher:
Code:
double Grid_Upper_1_High = PREISLEVEL() + (( 1 * Grid_Abstand * Point ) + ( Grid_Abstand / 2 ) * Point);
double Grid_Upper_1_Low = PREISLEVEL() - (( 1 * Grid_Abstand * Point )+( Grid_Abstand / 2 ) * Point);
Sonst ist dein jeweiliger Low Wert immer noch über dem Einstiegspreis, obwohl er ja darunter liegen sollte.
Mit freundlichen Grüßen
Timo