エキスパートアドバイザー - 雑多な質問 - ページ 8 123456789101112131415...43 新しいコメント Marco vd Heijden 2016.12.09 08:37 #71 では、もしあなたが int stoploss=50;double stop; stop=stoploss*Point();Print(DoubleToString(stoploss));Point()関数を使用すると、ストップロスの値が得られ、それをビッドとアスクそれぞれから足したり引いたりすることで、ストップロスの価格水準を知ることができます。テイクプロフィットも同様ですが、もちろん逆も同様です。コードベースのEAをチェックすると、コーダーがEAでどのようにこれらのことを行っているか、多くの例とバリエーションがあります。例えば、Trailing Masterhttps://www.mql5.com/en/code/16136 というのがあります。//-------------------------------------------------------------------------// 1. Main function//-------------------------------------------------------------------------void OnTick(void) { Comment("Copyright © 2016, Il Anokhin\n"+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));//--- 1.1. Define pip ----------------------------------------------------- if(Digits==4 || Digits<=2) pip=Point; if(Digits==5 || Digits==3) pip=Point*10;//--- 1.2. Trailing ------------------------------------------------------- for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && TS>0 && OrderProfit()>0) { if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0); if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0); if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0); if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0); if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0); if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0); if(UC==false && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0); if(UC==false && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0); } } }//--- 1.3. End of main function -------------------------------------------ここでは、コーダーIl Anokhin fistが pipを定義しているのを見ることができます。しかし、これはДимаhttps://www.mql5.com/en/code/8674 からのE-smart trailingと呼ばれる別の例です。 //+------------------------------------------------------------------+void ModifyStopLossInPoint(int stoploss){bool result;double sl = 0;double point = MarketInfo(OrderSymbol(),MODE_POINT);if (OrderType() == OP_BUY) sl = OrderOpenPrice() + stoploss * point;if (OrderType() == OP_SELL) sl = OrderOpenPrice() - stoploss * point; result = OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,CLR_NONE);if (result && UseSound) PlaySound(var_132);}//+------------------------------------------------------------------+このように、微妙な違いがあることに気づかされます。私はいつも、一番うまくいく方法を見つけるまで、いろいろなことを試しています。 Trailing Master 投票: 112016.10.27Il Anokhinwww.mql5.com The Expert Advisor that performs order trailing after reaching certain profit. expert advisor - miscellaneous どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - コーディングの方法は? Max Enrik 2016.12.09 08:46 #72 Marco vd Heijden:さて、もしあなたが使用...私は何かを読んで、試して開始する前に、Omg、ちょうどクイックチェックアウト 驚くべきすべてのためのありがとうございます。私はすぐにそれを試してみます。もう1度、Marco vd Heijdenに 大感謝です。 Max Enrik 2016.12.10 04:54 #73 Marco vd Heijden: オブジェクトは互いに重なり合っているので、どのボタンやオブジェクトをクリックすると、重なり合う可能性のある他のオブジェクト よりも最優先されるかをchartevent ()に知らせることが重要です。私は、より明確に、より有用 であるあなたのコメントが 好きです。よろしくお願いします。 Max Enrik 2016.12.10 13:17 #74 Marco vd Heijden:そうですか、もしあなたが int stoploss=50;私はいつも、一番うまくいく方法を見つけるまで、いろいろなことを試しています。私は、あなたの良いコメントを理解し、私の注文、ストップロス、テイクプロフィットの関数に良いコードを書こうとしているのです。EURUSDとFBのストップロスの 値が10pipsで合って いるか確認したい のですが?( もし私が何を考えているか知りたいのであれば、私は以下のログ/結果の両方が10 pipsのための正しい値であると思うだけです。) 例: ストップロス値 = 10; ポジション - BUY ログ: EURUSD|価格(アスク):1.05633|ストップロス:1.05533 log: FB|価格(アスク):119.69|ストップロス:119.59( 私は以下の関数をvoid OnChartevent()で呼び出しています)// this part of code from OnChartEvent()//---if ( sparam == _buy_name_btn ){ ObjectSetInteger( 0, sparam, OBJPROP_STATE, false ); _Buy_calc_SL_TP(); Print( " | Click Verify / ");}//---return;void _Buy_calc_SL_TP(){ //--- if ( _StopLoss_ON == true ) { //_Sl = OrderOpenPrice() - _StopLoss * _Pip; _Sl = Ask - _StopLoss * _Pip; Print( " | Buy Calc SL TP Function / StopLoss: ", _Sl ); } //--- return;} expert advisor - miscellaneous Any rookie question, so Need help to round Marco vd Heijden 2016.12.10 15:01 #75 動作しているようです。 Max Enrik 2016.12.11 04:27 #76 William 氏のコメントをEAのコードの頭に入れるようにします。素晴らしいピップス計算 MQL4(このコード業界は私にとっては非常に広く見えるので、私を責めないでください。)そして、私のテストEAのコードが完成したら、そのコードが良いものかどうか、正しいものかどうか、共有したいと思います(私はプロのコーダー/プログラマーではないので、現在取り組んでいるところです)。 Max Enrik 2016.12.11 04:37 #77 Keith Watford:OK、公平に。私は目が痛くなるので、あなたの投稿のいくつかを読むのが面倒です。 他の人も同じように感じているなら、私ではなく、あなたが見逃しているのです。 私はあなたのこの名前を知りませんでした。私はあなたが@Gumraiのようなものだと知っているだけなので、あなたのコメントに対して少し怒っていたのは残念です。ということは、私のコード知識がゼロのときに、このコメントで 私を助けてくれたのですね。私のコメントは全て無視しても問題ありませんし、助けも必要です。しかし、私はただ、あなたへの私の怒りの答えを謝る必要があります。 Max Enrik 2016.12.11 12:40 #78 マーケットが閉じていて、他のことはよく わかりません。しかし、私は以下のコードのようなものを試しましたが、何かを見落とした ような気がします。(私のトレードパネル EAには買い建玉と売り建玉のコードがありますが、このEAがどのように機能するか確かめるため、私の手で書いてみました )ご助言のほど、よろしくお願いいたします。#define CHANGE double ///< Difference of two prices.#define POINT int ///< `CHANGE / _Point`.#define PIP double ///< `POINT / PipsPerPOINT`. CHANGE points_to_change(POINT n){ return n * _Point ;} POINT change_to_points(CHANGE c){ return POINT(c / _Point + 0.5) ;} CHANGE pips_to_change (PIP n){ return points_to_change(pips_to_points(n));} PIP change_to_pips (CHANGE c){ return points_to_pips(change_to_points(c));} POINT pips_to_points (PIP n){ if( (_Digits&1) == 1) n *= 10.0; return POINT(n);} PIP points_to_pips (POINT n){ PIP p = n; if( (_Digits&1) == 1) p /= 10.0; return p;}string prfx = "test" ;string sellbutton = prfx + "sell" ;string sounduse = "tick.wav" ;int stoploss = 10 ;int takeprofit = 10 ;int magic = 12345 ;int ticket = 0 ;int slippage = 3 ;double lot = 0.01 ;double sl ;bool stoploss_on = true ;bool result ;bool sound_use = true ;//---//---int OnInit(){ ObjectCreate ( 0, sellbutton, OBJ_BUTTON , 0, 0, 0 ); ObjectSetString ( 0, sellbutton, OBJPROP_TEXT , "Sell" ); ObjectSetInteger ( 0, sellbutton, OBJPROP_XDISTANCE , 20 ); ObjectSetInteger ( 0, sellbutton, OBJPROP_YDISTANCE , 20 ); ObjectSetInteger ( 0, sellbutton, OBJPROP_XSIZE , 80 ); ObjectSetInteger ( 0, sellbutton, OBJPROP_YSIZE , 40 ); ObjectSetInteger ( 0, sellbutton, OBJPROP_CORNER , CORNER_LEFT_UPPER ); ObjectSetInteger ( 0, sellbutton, OBJPROP_COLOR , clrWhite ); ObjectSetInteger ( 0, sellbutton, OBJPROP_BGCOLOR , clrMaroon ); ObjectSetInteger ( 0, sellbutton, OBJPROP_STATE , false ); ObjectSetInteger ( 0, sellbutton, OBJPROP_ZORDER , 1 ); Print( "ObjectsTotal: ", ObjectsTotal() ); return(0);}//---//---void OnTick(){ //--- //--- return;}//---//---void OnDeinit(const int reason){ //--- ObjectsDeleteAll( 0, prfx ); //--- return;}//---//---void OnChartEvent(const int id , const long& lparam , const double& dparam , const string& sparam ){ // Sell if ( sparam == sellbutton ) { ObjectSetInteger( 0, sparam, OBJPROP_STATE, false ); ticket = Orderfuntions( sellbutton ); } return;}//---//---void SellCalcSLTP(){ //--- if ( stoploss_on == true ) { if ( OrderType() == OP_SELL ) sl = OrderOpenPrice() - pips_to_change( stoploss ); if ( OrderType() == OP_BUY ) sl = OrderOpenPrice() + pips_to_change( stoploss ); result = OrderModify( OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, CLR_NONE ); if ( result && sound_use ) PlaySound( sounduse ); } //--- return;}//---//---int Orderfuntions( string _Order_selector ){ // Sell Order SellCalcSLTP(); if ( _Order_selector == sellbutton ) { ticket = OrderSend( _Symbol, OP_SELL, lot, Bid, slippage, sl, takeprofit, "comment", magic, 0, clrMaroon ); } return(ticket);} expert advisor - miscellaneous On-chart independent close button Button On Chart Want Marco vd Heijden 2016.12.11 22:41 #79 見た目は問題ないのですが、このままではordermodifyを使うことができず、まずOrderSelect()関数で 注文を選択する必要があります。 Max Enrik 2016.12.12 02:04 #80 Marco vd Heijden: 見た目は問題ないのですが、このままではordermodifyは使えません、まずOrderSelect()関数で 注文を選択する必要があります。 いいね、早速やってみるよ。ありがとうございます。 123456789101112131415...43 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
では、もしあなたが
double stop;
stop=stoploss*Point();
Print(DoubleToString(stoploss));
Point()関数を使用すると、ストップロスの値が得られ、それをビッドとアスクそれぞれから足したり引いたりすることで、ストップロスの価格水準を知ることができます。
テイクプロフィットも同様ですが、もちろん逆も同様です。
コードベースのEAをチェックすると、コーダーがEAでどのようにこれらのことを行っているか、多くの例とバリエーションがあります。
例えば、Trailing Masterhttps://www.mql5.com/en/code/16136 というのがあります。
// 1. Main function
//-------------------------------------------------------------------------
void OnTick(void)
{
Comment("Copyright © 2016, Il Anokhin\n"+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
//--- 1.1. Define pip -----------------------------------------------------
if(Digits==4 || Digits<=2) pip=Point;
if(Digits==5 || Digits==3) pip=Point*10;
//--- 1.2. Trailing -------------------------------------------------------
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol() && TS>0 && OrderProfit()>0)
{
if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==true && OrderComment()==Comm && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==true && OrderMagicNumber()==Magic && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==false && OrderType()==OP_BUY && OrderOpenPrice()+TS*pip<=Bid && OrderStopLoss()<Bid-TS*pip) w=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TS*pip,OrderTakeProfit(),0);
if(UC==false && UM==false && OrderType()==OP_SELL && OrderOpenPrice()-TS*pip>=Ask && (OrderStopLoss()>Ask+TS*pip || OrderStopLoss()==0)) w=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TS*pip,OrderTakeProfit(),0);
}
}
}
//--- 1.3. End of main function -------------------------------------------
ここでは、コーダーIl Anokhin fistが pipを定義しているのを見ることができます。
しかし、これはДимаhttps://www.mql5.com/en/code/8674 からのE-smart trailingと呼ばれる別の例です。
//+------------------------------------------------------------------+
void ModifyStopLossInPoint(int stoploss)
{
bool result;
double sl = 0;
double point = MarketInfo(OrderSymbol(),MODE_POINT);
if (OrderType() == OP_BUY) sl = OrderOpenPrice() + stoploss * point;
if (OrderType() == OP_SELL) sl = OrderOpenPrice() - stoploss * point;
result = OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,CLR_NONE);
if (result && UseSound) PlaySound(var_132);
}
//+------------------------------------------------------------------+
このように、微妙な違いがあることに気づかされます。
私はいつも、一番うまくいく方法を見つけるまで、いろいろなことを試しています。
さて、もしあなたが使用...
私は何かを読んで、試して開始する前に、Omg、ちょうどクイックチェックアウト 驚くべきすべてのためのありがとうございます。私はすぐにそれを試してみます。
もう1度、Marco vd Heijdenに 大感謝です。
オブジェクトは互いに重なり合っているので、どのボタンやオブジェクトをクリックすると、重なり合う可能性のある他のオブジェクト よりも最優先されるかをchartevent ()に知らせることが重要です。
私は、より明確に、より有用 であるあなたのコメントが 好きです。
よろしくお願いします。
そうですか、もしあなたが
私はいつも、一番うまくいく方法を見つけるまで、いろいろなことを試しています。
私は、あなたの良いコメントを理解し、私の注文、ストップロス、テイクプロフィットの関数に良いコードを書こうとしているのです。
EURUSDとFBのストップロスの 値が10pipsで合って いるか確認したい のですが?( もし私が何を考えているか知りたいのであれば、私は以下のログ/結果の両方が10 pipsのための正しい値であると思うだけです。)
例: ストップロス値 = 10; ポジション - BUY
ログ: EURUSD|価格(アスク):1.05633|ストップロス:1.05533
log: FB|価格(アスク):119.69|ストップロス:119.59
( 私は以下の関数をvoid OnChartevent()で呼び出しています)
//---
if ( sparam == _buy_name_btn )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_Buy_calc_SL_TP();
Print( " | Click Verify / ");
}
//---
return;
{
//---
if ( _StopLoss_ON == true )
{
//_Sl = OrderOpenPrice() - _StopLoss * _Pip;
_Sl = Ask - _StopLoss * _Pip;
Print( " | Buy Calc SL TP Function / StopLoss: ", _Sl );
}
//---
return;
}
動作しているようです。
William 氏のコメントをEAのコードの頭に入れるようにします。素晴らしいピップス計算 MQL4
(このコード業界は私にとっては非常に広く見えるので、私を責めないでください。)
そして、私のテストEAのコードが完成したら、そのコードが良いものかどうか、正しいものかどうか、共有したいと思います(私はプロのコーダー/プログラマーではないので、現在取り組んでいるところです)。
Keith Watford:
OK、公平に。私は目が痛くなるので、あなたの投稿のいくつかを読むのが面倒です。
他の人も同じように感じているなら、私ではなく、あなたが見逃しているのです。
マーケットが閉じていて、他のことはよく わかりません。しかし、私は以下のコードのようなものを試しましたが、何かを見落とした ような気がします。
(私のトレードパネル EAには買い建玉と売り建玉のコードがありますが、このEAがどのように機能するか確かめるため、私の手で書いてみました )
ご助言のほど、よろしくお願いいたします。
#define POINT int ///< `CHANGE / _Point`.
#define PIP double ///< `POINT / PipsPerPOINT`.
CHANGE points_to_change(POINT n){ return n * _Point ;}
POINT change_to_points(CHANGE c){ return POINT(c / _Point + 0.5) ;}
CHANGE pips_to_change (PIP n){ return points_to_change(pips_to_points(n));}
PIP change_to_pips (CHANGE c){ return points_to_pips(change_to_points(c));}
POINT pips_to_points (PIP n){ if( (_Digits&1) == 1) n *= 10.0; return POINT(n);}
PIP points_to_pips (POINT n){ PIP p = n; if( (_Digits&1) == 1) p /= 10.0; return p;}
string prfx = "test" ;
string sellbutton = prfx + "sell" ;
string sounduse = "tick.wav" ;
int stoploss = 10 ;
int takeprofit = 10 ;
int magic = 12345 ;
int ticket = 0 ;
int slippage = 3 ;
double lot = 0.01 ;
double sl ;
bool stoploss_on = true ;
bool result ;
bool sound_use = true ;
//---
//---
int OnInit()
{
ObjectCreate ( 0, sellbutton, OBJ_BUTTON , 0, 0, 0 );
ObjectSetString ( 0, sellbutton, OBJPROP_TEXT , "Sell" );
ObjectSetInteger ( 0, sellbutton, OBJPROP_XDISTANCE , 20 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_YDISTANCE , 20 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_XSIZE , 80 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_YSIZE , 40 );
ObjectSetInteger ( 0, sellbutton, OBJPROP_CORNER , CORNER_LEFT_UPPER );
ObjectSetInteger ( 0, sellbutton, OBJPROP_COLOR , clrWhite );
ObjectSetInteger ( 0, sellbutton, OBJPROP_BGCOLOR , clrMaroon );
ObjectSetInteger ( 0, sellbutton, OBJPROP_STATE , false );
ObjectSetInteger ( 0, sellbutton, OBJPROP_ZORDER , 1 );
Print( "ObjectsTotal: ", ObjectsTotal() );
return(0);
}
//---
//---
void OnTick()
{
//---
//---
return;
}
//---
//---
void OnDeinit(const int reason)
{
//---
ObjectsDeleteAll( 0, prfx );
//---
return;
}
//---
//---
void OnChartEvent(const int id ,
const long& lparam ,
const double& dparam ,
const string& sparam
)
{
// Sell
if ( sparam == sellbutton )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
ticket = Orderfuntions( sellbutton );
}
return;
}
//---
//---
void SellCalcSLTP()
{
//---
if ( stoploss_on == true )
{
if ( OrderType() == OP_SELL ) sl = OrderOpenPrice() - pips_to_change( stoploss );
if ( OrderType() == OP_BUY ) sl = OrderOpenPrice() + pips_to_change( stoploss );
result = OrderModify( OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, CLR_NONE );
if ( result && sound_use ) PlaySound( sounduse );
}
//---
return;
}
//---
//---
int Orderfuntions( string _Order_selector )
{
// Sell Order
SellCalcSLTP();
if ( _Order_selector == sellbutton )
{
ticket = OrderSend( _Symbol, OP_SELL, lot, Bid, slippage, sl, takeprofit, "comment", magic, 0, clrMaroon );
}
return(ticket);
}
見た目は問題ないのですが、このままではordermodifyは使えません、まずOrderSelect()関数で 注文を選択する必要があります。