Hier ist ein Teil des Skriptcodes für Metatrader5:
#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//---- показывать входные параметры#property script_show_inputs//---#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
CTrade m_trade; // trading object
CSymbolInfo m_symbol; // symbol info object//+------------------------------------------------------------------+//| Enum Stop or Limit |//+------------------------------------------------------------------+enum ENUM_STOP_OR_LIMIT
{
stop=0, // Buy stop and Sell stop
limit=1// Buy limit and Sell limit
};
//--- input parametersinputushort InpUpGap = 15; // Gap for pending orders UP from the current price (in points)inputushort InpUpStep = 30; // Step between orders UP (in points)inputushort InpDownGap = 15; // Gap for pending orders DOWN from the current price (in points)inputushort InpDownStep = 30; // Step between orders DOWN (in points)input ENUM_STOP_OR_LIMIT InpPending = stop; // Type of pending ordersinputuchar InpUpQuantity = 1; // UP quantity ordersinputuchar InpDownQuantity = 1; // DOWN quantity ordersinputdouble InpLots = 0.01; // Lotsinputushort InpStopLoss = 50; // Stop Loss (in points)inputushort InpTakeProfit = 50; // Take Profit (in points)//---ulong m_slippage=30; // slippagedouble ExtUpGap=0.0;
double ExtUpStep=0.0;
double ExtDownGap=0.0;
double ExtDownStep=0.0;
double ExtStopLoss=0.0;
double ExtTakeProfit=0.0;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---if(InpLots<=0.0)
{
Print("The \"Lots\" can't be smaller or equal to zero");
return;
}
//---if(!m_symbol.Name(Symbol())) // sets symbol namereturn;
if(!RefreshRates())
return;
string err_text="";
if(!CheckVolumeValue(InpLots,err_text))
{
Print(err_text);
return;
}
//---if(IsFillingTypeAllowed(SYMBOL_FILLING_FOK))
m_trade.SetTypeFilling(ORDER_FILLING_FOK);
elseif(IsFillingTypeAllowed(SYMBOL_FILLING_IOC))
m_trade.SetTypeFilling(ORDER_FILLING_IOC);
else
m_trade.SetTypeFilling(ORDER_FILLING_RETURN);
//---
m_trade.SetDeviationInPoints(m_slippage);
m_trade.SetAsyncMode(true);
//---
ExtUpGap = m_symbol.Point() * InpUpGap;
ExtUpStep = m_symbol.Point() * InpUpStep;
ExtDownGap = m_symbol.Point() * InpDownGap;
ExtDownStep = m_symbol.Point() * InpDownStep;
ExtStopLoss = m_symbol.Point() * InpStopLoss;
ExtTakeProfit = m_symbol.Point() * InpTakeProfit;
//--- start workdouble start_price_ask=m_symbol.Ask()-ExtUpGap;
double start_price_bid=m_symbol.Bid()+ExtDownGap;
//--- set pending ordersfor(int i=0; i<InpUpQuantity; i++)
{
double price_ask = start_price_ask+i*ExtUpStep;
double price_bid = start_price_bid+i*ExtUpStep;
if(InpPending==stop)
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit;
m_trade.BuyStop(InpLots,m_symbol.NormalizePrice(price_ask),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
else
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit;
m_trade.SellLimit(InpLots,m_symbol.NormalizePrice(price_bid),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
}
for(int i=0; i<InpDownQuantity; i++)
{
double price_ask = start_price_ask-i*ExtDownStep;
double price_bid = start_price_bid-i*ExtDownStep;
if(InpPending==limit)
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit;
m_trade.BuyLimit(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
else
{
double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss;
double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit;
m_trade.SellStop(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(),
m_symbol.NormalizePrice(sl),
m_symbol.NormalizePrice(tp));
}
}
}
Das Skript soll entweder schwebende Limit-Aufträge in einem bestimmten Abstand zum Geld- und Briefkurs oder Stop-Aufträge setzen. Dieschwebenden Limit-Aufträge werden ohne Probleme gesetzt, die Stop-Aufträge jedoch nicht. Ich weiß nicht, warum die schwebenden Aufträge Sell Stop und Buy Stop nicht gesetzt sind.
Rustam Bikbulatov: Hallo Leute. Neben einer offenen Bestellung wird ein Los geschrieben. Können Sie mir sagen, wie ich den letzten Text und diese Liste übernehmen kann?
Sie müssen zuerst alle Texte finden und diese Funktion verwenden, um daraus zu rechnen?
Ich kenne mich damit nicht so gut aus, da ich selbst gerade die Sprache mql4 lerne. Sie können alles in der Hilfe nachlesen. Benötigen Sie den gesamten Text des Objekts oder nur einen Teil davon?
Yevhenii Levchenko: Ich kenne mich damit nicht so gut aus, da ich selbst erst seit kurzem die Sprache mql4 lerne. Die Hilfen sind alle da. Benötigen Sie den gesamten Text des Objekts oder nur einen Teil davon?
Ich brauche das, was beim letzten Mal geschrieben wurde
Rustam Bikbulatov: Hallo Leute. Neben einer offenen Bestellung wird ein Los geschrieben.Können Sie mir sagen, wie ich den letzten Text und diese Liste übernehmen kann?
Von welcher Liste?
Und benutzen Sie bitte den Styler im Editor (Strg+<):
Guten Tag zusammen!
Hier ist ein Teil des Skriptcodes für Metatrader5:
Das Skript soll entweder schwebende Limit-Aufträge in einem bestimmten Abstand zum Geld- und Briefkurs oder Stop-Aufträge setzen. Dieschwebenden Limit-Aufträge werden ohne Probleme gesetzt, die Stop-Aufträge jedoch nicht. Ich weiß nicht, warum die schwebenden Aufträge Sell Stop und Buy Stop nicht gesetzt sind.
Mit freundlichen Grüßen, Vladimir.
Hallo Leute. Neben einer offenen Bestellung wird ein Los geschrieben. Können Sie mir sagen, wie ich den letzten Text und diese Liste übernehmen kann?
Sie müssen zuerst alle Texte finden und diese Funktion verwenden, um daraus zu rechnen?
Sie müssen zuerst alle Texte finden und diese Funktion verwenden, um daraus zu rechnen?
Ich kenne mich damit nicht so gut aus, da ich selbst erst seit kurzem die Sprache mql4 lerne. Die Hilfen sind alle da. Benötigen Sie den gesamten Text des Objekts oder nur einen Teil davon?
Ich brauche das, was beim letzten Mal geschrieben wurde
Hallo Leute. Neben einer offenen Bestellung wird ein Los geschrieben. Können Sie mir sagen, wie ich den letzten Text und diese Liste übernehmen kann?
Von welcher Liste?
Und benutzen Sie bitte den Styler im Editor (Strg+<):
Was soll woher genommen werden?
Von welcher Liste?
Und benutzen Sie bitte den Styler im Editor (Strg+<):
Woher bekomme ich sie?
Diese Funktion schreibt eine Nummer auf jede Bestellung oder genauer gesagt ein Los*100.
Wir brauchen nun eine Umkehrfunktion, die uns zeigt, was die letzte Zahl war