[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 589
Manchmal verwenden Skripte das #property show_inputs, um einen Dialog mit Parametern anzuzeigen, wie in EA (es ist dort selbstverständlich), aber es ist schwer, den Unterschied zu erkennen...
Er hat es nicht bis zum Morgen ausgehalten. Es wurde ein wenig besser, aber die Platzierungen der Auftragsblüten ließen sich nicht vermeiden. Wie kann ich einen Einzelauftrag zu den gewünschten Konditionen einrichten? Sie sagten: Nein, das geht nicht, nur durch Analyse der Auftragshistorie - wie sollen wir das machen oder was ist sonst geeignet?
wie diese
int i,orders_total=OrdersTotal();
bool order_on_last_bar=false;
if(orders_total>0) //если есть ордера
{
for(i=orders_total-1;i>=0;i--) //перебираем их все
{
OrderSelect(i,SELECT_BY_POS);
if(iBarShift(OrderOpenTime())==0) //если номер бара, соответствующего сремени открытия, равен 0
order_on_last_bar=true; //фиксируем этот факт
}
}
if(order_on_last_bar==false) // на нулевом баре нет открытых ордеров
{
//делаем то что нам нужно
}
Ich habe diese Frage schon einmal gestellt, aber jetzt brauche ich sie erneut, um das maximale Volumen für die Eröffnung einer Position zu berechnen. Ich schreibe es so:
// Расчет максимального объемаfor (double m = 0.1; AccountFreeMarginCheck(Symbol(),OP_SELL,m)>30; m = m + 0.1)
{
Max_lots = m;
double Ost = AccountFreeMarginCheck(Symbol(),OP_SELL,m);
}
Aber Max_lots ist die ganze Zeit gleich Null... Ich weiß nicht, vielleicht kennt jemand eine kompetentere Konstruktion zur Berechnung einer solchen Sache?
Ich füllte alle iBarShift Funktion Werte (Kompilierung verursacht Fehler vor), int i wurde bereits oben deklariert. Ich habe versucht, diese Wiedergabe zu entfernen und ersetzen Sie es mit j für die Zwecke des Experiments, aber es hat nicht funktioniert - ich bekam mehrere Bestellung öffnen/schließen auf einige Bars. Unten ist der Code mit den Öffnungsbedingungen, vielleicht habe ich etwas durcheinander gebracht. Was können wir sonst noch tun?
int j,orders_total=OrdersTotal();
bool order_on_last_bar=false;
if(orders_total>0) //если есть ордера
{
for(j=orders_total-1;j>=0;j--) //перебираем их все
{
OrderSelect(j,SELECT_BY_POS);
if(iBarShift(NULL,0,OrderOpenTime())==0) //если номер бара, соответствующего времени открытия, равен 0
order_on_last_bar=true; //фиксируем этот факт
}
}
if(order_on_last_bar==false) // на нулевом баре нет открытых ордеров
{
while(true) // Цикл закрытия орд.
{
if (Total==0 && Opn_B==true) // Открытых орд. нет +
{ // критерий откр. Buy
RefreshRates(); // Обновление данныхAlert("Попытка открыть Buy. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,0,0);//Открытие Buyif (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Buy ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попыткаreturn; // Выход из start()
}
if (Total==0 && Opn_S==true) // Открытых орд. нет +
{ // критерий откр. Sell
RefreshRates(); // Обновление данныхAlert("Попытка открыть Sell. Ожидание ответа..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,0,0);//Открытие Selif (Ticket > 0) // Получилось :)
{
Alert ("Открыт ордер Sell ",Ticket);
return; // Выход из start()
}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попыткаreturn; // Выход из start()
}
break; // Выход из while
}
}
Ich füllte alle iBarShift Funktion Werte (Kompilierung verursacht Fehler vor), int i wurde bereits oben deklariert; Ich habe versucht, diese Wiedergabe zu entfernen und ersetzen Sie es mit j für saubere Experiment; es hat nicht funktioniert - ich bekam mehrere Ordnung öffnen/schließen auf einige Bars. Unten ist der Code mit den Öffnungsbedingungen, vielleicht habe ich etwas durcheinander gebracht. Was können wir sonst noch tun?
1. Was ist die Variable "Total", wo ist ihr Wert zugewiesen?
2. es wäre besser, else vor das zweite if(Total==0 if(
int start()
{
int
Total, // Количество ордеров в окне
...
// Учёт ордеров
Symb=Symbol(); // Название фин.инстр.
Total=0; // Количество ордеровfor(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:if (OrderSymbol()!=Symb)continue; // Не наш фин. инструмif (OrderType()>1) // Попался отложенный
{
Alert("Обнаружен отложенный ордер. Эксперт не работает.");
return; // Выход из start()
}
Total++; // Счётчик рыночн. ордif (Total>1) // Не более одного орд
{
Alert("Несколько рыночных ордеров. Эксперт не работает.");
return; // Выход из start()
}
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
}
}
Craft: Es hat nicht geholfen. alsu, entschuldige die Aufdringlichkeit, aber ich möchte es wirklich herausfinden (zu Ende bringen).
keine große Sache.
Versuchen Sie, /* */ ein Stück Code aus dem einfachen EA zu übertragen, und ersetzen Sie Total durch orders_total - eine Variable, die wir selbst deklariert haben.
Skripte sind von EAs nicht zu unterscheiden...
Manchmal verwenden Skripte das #property show_inputs, um einen Dialog mit Parametern anzuzeigen, wie in EA (es ist dort selbstverständlich), aber es ist schwer, den Unterschied zu erkennen...
Können Sie einen Algorithmus vorschlagen... Wir müssen den Zeitpunkt des Hochs und des Tiefs des hohen Zeitrahmens im niedrigen Zeitrahmen finden.
Können Sie einen Algorithmus vorschlagen... Sie müssen den Zeitpunkt des Hochs und des Tiefs des hohen Zeitrahmens im niedrigen Zeitrahmen finden.
Erinnern Sie sich oder verwenden Sie sofort i - den gefundenen Index.
Und iTime(NULL,TF2,i) wird die Zeit sein.
Er hat es nicht bis zum Morgen ausgehalten. Es wurde ein wenig besser, aber die Platzierungen der Auftragsblüten ließen sich nicht vermeiden. Wie kann ich einen Einzelauftrag zu den gewünschten Konditionen einrichten? Sie sagten: Nein, das geht nicht, nur durch Analyse der Auftragshistorie - wie sollen wir das machen oder was ist sonst geeignet?
wie diese
Ich habe diese Frage schon einmal gestellt, aber jetzt brauche ich sie erneut, um das maximale Volumen für die Eröffnung einer Position zu berechnen. Ich schreibe es so:
Aber Max_lots ist die ganze Zeit gleich Null... Ich weiß nicht, vielleicht kennt jemand eine kompetentere Konstruktion zur Berechnung einer solchen Sache?
wie diese
Ich füllte alle iBarShift Funktion Werte (Kompilierung verursacht Fehler vor), int i wurde bereits oben deklariert. Ich habe versucht, diese Wiedergabe zu entfernen und ersetzen Sie es mit j für die Zwecke des Experiments, aber es hat nicht funktioniert - ich bekam mehrere Bestellung öffnen/schließen auf einige Bars. Unten ist der Code mit den Öffnungsbedingungen, vielleicht habe ich etwas durcheinander gebracht. Was können wir sonst noch tun?
Ich füllte alle iBarShift Funktion Werte (Kompilierung verursacht Fehler vor), int i wurde bereits oben deklariert; Ich habe versucht, diese Wiedergabe zu entfernen und ersetzen Sie es mit j für saubere Experiment; es hat nicht funktioniert - ich bekam mehrere Ordnung öffnen/schließen auf einige Bars. Unten ist der Code mit den Öffnungsbedingungen, vielleicht habe ich etwas durcheinander gebracht. Was können wir sonst noch tun?
1. Was ist die Variable "Total", wo ist ihr Wert zugewiesen?
2. es wäre besser, else vor das zweite if(Total==0 if(
1. Was ist die Variable Total und wo wird ihr Wert zugewiesen?
Dies basiert auf dem Beispiel aus dem Artikel Simple Expert: https://book.mql4.com/ru/samples/expert
alsu:
2. vor dem zweiten if(Total==0 ist es besser, ein else if(.
Es hat nicht geholfen. alsu, entschuldige die Aufdringlichkeit, aber ich möchte es wirklich herausfinden (zu Ende bringen).
keine große Sache.
Versuchen Sie, /* */ ein Stück Code aus dem einfachen EA zu übertragen, und ersetzen Sie Total durch orders_total - eine Variable, die wir selbst deklariert haben.