//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ voidOnTick () { { if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли return ; } //+----------------------------------------------------------------
Artyomさん、上のコードを投げてみました。
上記で投げたコードと同じリンクをコピーし、参加者の投稿を参照する際にあなたの投稿に貼り付けてください。それとも、そんなに場所や内容を知らなくても探したいと思っているのでしょうか?
以下は、私が返信しているあなたの投稿へのリンクです:#1170。ニックネームの横のストックエリアにあります。
上で投げたコードと同じリンクをコピーして、参加者のメッセージを参照するときに、メッセージに貼り付けてください .それとも、そんなに場所や内容を知らなくても探したいと思っているのでしょうか?
https://www.mql5.com/ru/forum/160683/page109
1082メッセージ
ただ、このリソースではどうなのかわかりませんが、通常、モデレーターは編集を含むすべてのユーザーの投稿を見ることができます。
このような記事へのリンクはどのようにすればいいのか、私にはわかりません。
https://www.mql5.com/ru/forum/160683/page109
1082メッセージ
ただ、このリソースについてはわかりませんが、通常、モデレーターは編集を含め、どのユーザーの投稿もすべて見ることができます。
このような記事へのリンクはどのようにすればよいのか、私にはわかりません。
https://www.mql5.com/ru/forum/160683/page109
1082メッセージ
SRCボタンを使って、ここにコードとして添付してください。そうすれば、ダウンロードして正しい端末フォルダ に配置することなく、安全にコードを見ることができます。
いいえ、ダウンロードしたくありません。
SRCボタンを使用してコードとしてここに添付してください。そうすれば、コードをダウンロードしてターミナルの適切なフォルダーに配置しなくても、コードを安全に確認できます。なぜ、あなたを助けることができる人々の生活を複雑にするのでしょうか。
どうか、端末にダウンロードせずに確認する方法がわからないだけです。また、ページを詰まらせるコードをここにスローすることの利点について説明してください。
//| Close_MA.mq4 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
extern bool Uslovie1= false ; //Uslovie 4 6+50 MA
extern bool OpenOrders= false ; //+---Открыть ордер
extern double Lots= 0.01 ; //Oбьем открываемого ордера
extern const string Настройки_работы_советника= "" ;
extern int Period1= 6 ; //Период 1МА
extern ENUM_APPLIED_PRICE PRICE1= PRICE_MEDIAN ; // 1МА По цене
extern int Period2= 50 ; //Период 2МА
extern ENUM_APPLIED_PRICE PRICE2= PRICE_MEDIAN ; // 2МА По цене
extern int Period3= 1000 ; //Период 3МА
extern ENUM_APPLIED_PRICE PRICE3= PRICE_MEDIAN ; // 3МА По цене
extern uint X= 1 ; // отклонение от ма, пунктов
extern bool PlaySound = false ;
extern int M= 1000 ; // миллисекунды в Sleep
extern int R; // раз повторения музыки
extern int count= 0 ;
extern int Step= 500 ; // счетчик тиков 500макс.
int i; // исходный счетчик ордеров
int p= 0 ; // внутренняя для playSound
bool y = false ; // для удобства сравнений условий 1,2,3,4,5,6
bool dummy; // для выхода функций в переменную
int ticket = 0 ; // тикет открываемого ордера
int Magic = 222 ;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick ()
{
{
if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
return ;
}
//+----------------------------------------------------------------
double ma1= NormalizeDouble ( iMA ( NULL , 0 ,Period1, 0 , MODE_SMA ,PRICE1, 0 ), 5 );
double ma2= NormalizeDouble ( iMA ( NULL , 0 ,Period2, 0 , MODE_SMA ,PRICE1, 0 ), 5 ); //три заданных параметра ма
double ma3= NormalizeDouble ( iMA ( NULL , 0 ,Period3, 0 , MODE_SMA ,PRICE1, 0 ), 5 );
//+----------------------------------------------------------------- Открытие ордеров
//+----Купить
{
if ( MathAbs ( Bid -ma3)< 1000 * Point () && (myOrdersTotal()== false ))
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray ); //+------отправка 1 ордера
HLineCreate();
}
else if (( Ask >=(FindLastOrderOpenPrice()+(Step* _Point )))&& myOrdersTotal()) //+------------если ордер в плюс
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
HLineMove();
}
else if (( Ask <=(FindLastOrderOpenPrice()-(Step* _Point )))&& myOrdersTotal()) //+------------если ордер вплюс
{
ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
HLineMove();
}
else if (ticket== 0 )
{
return ;
}
/*
//+----Продать
if(MathAbs(Bid-ma3)>1000*Point() && (myOrdersTotal()==false))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);//+------отправка 1 ордера
HLineCreate1();
}
else if ((Ask>=(FindLastOrderOpenPrice()+(Step*_Point)))&& myOrdersTotal())//+------------если ордер в минус
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
HLineMove1();
}
else if ((Ask<=(FindLastOrderOpenPrice()-(Step*_Point)))&& myOrdersTotal())//+------------если ордер вплюс
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
HLineMove1();
}
else if(ticket==0)
{
return;
} */
}
//+------------------------------------------------------------------Условия
if (Uslovie1== true ) //Bid+ma800
{
if (( Bid >=ma3-X* Point && Bid <ma3) || ( Bid <=ma3+X* Point && Bid >ma3))
{
{y= true ;}
}
}
//+------------------------------------------------------------------закрыть покупки или продажи
if ((y== true ) && (myOrdersTotal()== true )) //продажа
{
dummy=( OrderClose ( OrderTicket (), OrderLots (), Ask , 0 ,White));
}
if ((y== true ) && (myOrdersTotal()== false ))
{
dummy= false ;
HLineDelete();
HLineDelete1();
// ExpertRemove();
}
}
//+------------------------------------------------------------------+
bool myOrdersTotal() //если ордера есть
{
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) // цикл будет работать пока не останется ордеров
{
if ((( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))== true ) && OrderSymbol ()== Symbol () && ( OrderType ()< 2 ))
{
return true ;
}
}
return false ;
}
//-------------------------------------------------------------------
double FindLastOrderOpenPrice()
{
double oldorderopenprice= 0 ;
int oldticket= 0 ;
ticket= 0 ;
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) // цикл будет работать пока не останется ордеров
{
if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==Magic)
&& ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ))
{
oldticket= OrderTicket ();
if (oldticket>=ticket)
{
ticket=oldticket;
oldorderopenprice= OrderOpenPrice ();
}
}
}
return (oldorderopenprice);
}
//-------------------------------------------------------------------
//+------------------------------------------------------ часть Buy bool HLineCreate();
bool HLineCreate( const long chart_ID= 0 , // ID графика
const string name= "Buy" , // имя линии
const int sub_window= 0 , // номер подокна
double price1= 0 , // цена линии
const color clr= clrAzure , // цвет линии
const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
const int width= 3 , // толщина линии
const bool back= false , // на заднем плане
const bool selection= true , // выделить для перемещений
const bool hidden= false , // скрыт в списке объектов
const long z_order= 0 ) // приоритет на нажатие мышью
{
if (!price1)
price1=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price1))
{
Print ( __FUNCTION__ ,
": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
//--- установим цвет линии
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
ChartRedraw ();
}
return ( true );
}
//+------------------------------------------------------------------+ HLineMove();
bool HLineMove( const long chart_ID= 0 , // ID графика
const string name= "Buy" , // имя линии
double price1= 0 ) // цена линии
{
if (!price1)
price1=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectMove (chart_ID,name, 0 , 0 ,price1))
{
Print ( __FUNCTION__ ,
": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+ bool HLineDelete();
bool HLineDelete( const long chart_ID= 0 , // ID графика
const string name= "Buy" ) // имя линии
{
ResetLastError ();
if (! ObjectDelete (chart_ID,name))
{
Print ( __FUNCTION__ ,
": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+-----------------------------------------------------------------+
//+-----------часть SELL bool HLineCreate1
//+------------------------------------------------------
//+------------------------------------------------------ bool HLineCreate1();
bool HLineCreate1( const long chart_ID= 0 , // ID графика
const string name= "Sell" , // имя линии
const int sub_window= 0 , // номер подокна
double price2= 0 , // цена линии
const color clr= clrRed , // цвет линии
const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
const int width= 2 , // толщина линии
const bool back= false , // на заднем плане
const bool selection= true , // выделить для перемещений
const bool hidden= false , // скрыт в списке объектов
const long z_order= 0 ) // приоритет на нажатие мышью
{
if (!price2)
price2=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price2))
{
Print ( __FUNCTION__ ,
": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
//--- установим цвет линии
ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
ChartRedraw ();
}
return ( true );
}
//+------------------------------------------------------------------+ HLineMove1();
bool HLineMove1( const long chart_ID= 0 , // ID графика
const string name= "Sell" , // имя линии
double price2= 0 ) // цена линии
{
if (!price2)
price2=FindLastOrderOpenPrice();
ResetLastError ();
if (! ObjectMove (chart_ID,name, 0 , 0 ,price2))
{
Print ( __FUNCTION__ ,
": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
//+------------------------------------------------------------------+ bool HLineDelete1();
bool HLineDelete1( const long chart_ID= 0 , // ID графика
const string name= "Sell" ) // имя линии
{
ResetLastError ();
if (! ObjectDelete (chart_ID,name))
{
Print ( __FUNCTION__ ,
": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
return ( false );
}
return ( true );
}
をここに入れて ください。
アルチョム、それは特に才能のある映像のためか?
私の端末にアップロードせずに確認する方法だけが分からないのでお願いします。また、ページを詰まらせるコードの断片をここに投げることの利点は何 なのか、説明してください。
trader781 さん、コードについてのご質問は?
コードの塊の利点は、例えば、私はテストファイルで、フォーラムのコードの一部をコピーして、ファイルに貼り付けるだけです。そうでない場合は、コード付きのファイルをダウンロードし、その中のフォルダを開いてファイルを貼り付け、その後、削除する必要があります。違いを感じますか?
私の端末にアップロードせずに確認する方法だけが分からないのでお願いします。また、ここにコードの断片を投げて、ページを詰まらせることの利点は何なのか、説明してください。
実際、人々はあなたが主張するエラーを再現するために最小限のコードを作るのが普通です。
でも、コードから判断すると、何をやっているのか全然わかっていないんですね。
関数にはパラメータがあり、それを渡すことができます。特にラインの色。でも、全部デフォルト値で作ってしまって、「私の関数の中身はどうなっているのか、どんなパラメータをもらっているのか」を聞かずに、「ターミナルが失敗した」と言い始めるんですね。それはいいんだけど...。
行を作成する関数からデフォルトのパラメータをすべて削除します。コンパイラは、関数を呼び出す ときにパラメータを設定することを考えさせます。また、重複する関数(名前の最後に1を付けたもの)を削除し、1つの関数に異なるパラメータを付けて使用します。
trader781 さん、具体的にどのようなコードについての質問でしょうか?
コードの断片の利点は、例えば、私はテストファイルを持っていて、フォーラムのコードの断片をコピーしてファイルに貼り付けるだけでよいということです。そうでない場合は、コード付きのファイルをダウンロードし、その中のフォルダを開いてファイルを貼り付け、その後、削除する必要があります。違いを感じますか?
なるほど
クソ部門・・・。
今のところ、許容範囲からは程遠いのは理解していますが、購入の場合、指定した色の破線が 出ないのはなぜか、白でも緑だけでも静かに出ますが、教えてください。
と
ダブル OP = 5.00000
TP=(OP/100)です。
Print("TP=",TP)。
2017.02.09 21:36:03.650 2015.01.05 04:00:00 マーティン H1-1 USDJPY,H1: TP= 0.5
いつから5を100で割ると0.5 なんだ?