コーディングの方法は? - ページ 154 1...147148149150151152153154155156157158159160161...347 新しいコメント codobro 2009.01.13 23:43 #1531 キコウシ。 最適な座標を自分でテストしてみてはいかがでしょうか。 FerruFXとCJAは、デフォルトのコーナーポジションを持ち、ユーザーがオブジェクトの配置に入力するという最良の解決策を採用しています。 また、OBJPROP_CORNERも参考にしてみてください。 また、同じ要望を投稿しないように心がけてください。 ユーザーはあなたの投稿を見ますし、誰かがあなたを助けることができるのであれば、そうするでしょう。 ありがとうございました。 編集:コーナープロパティ 0が左上、1が右上、2が左下、3が右下を使用しています。 0カウントとなります。 削除済み 2009.01.14 04:26 #1532 私のEAをデバッグするためのヘルプ こんにちは、もしこれが投稿するのに間違ったフォーラムであれば申し訳ありません。 私は私自身のEAをプログラムし、注文の充填と ストップロス注文でいくつかの問題を抱えています。 誰かが助けることができますか?私はEAを共有することができます。 ありがとうございます。 Kikousi 2009.01.14 05:31 #1533 codobroさん ご丁寧にご返信いただき、誠にありがとうございました。 今後、同じ質問を投稿しないようにします。 ご指摘ありがとうございます。 ちなみに、左上の位置は(0,0)だそうですが、その時の右下の指示は何でしょうか? 例えば、左上の位置が(0,0)の時、右下の表示は(250,350)でいいのでしょうか? 以上、ご教示のほど、よろしくお願いいたします。 Niller 2009.01.16 09:42 #1534 インジケーターグラフにすべてのデータが表示されない こんにちは。 私はC言語プログラミングは得意ですが、MQL4から始めました。 初めてインジケータを作ったのですが、別ウィンドウに部分的に配列が表示されます。 部分的にというのは、左にスクロールすると、ある期間は何も表示されず、さらに左にスクロールすると、ある期間のデータが表示され、といった具合です。 右へスクロールすると、同じ期間のデータは表示されません。 それ以外にはパターンが見当たりません。 また、1分足のデータが表示されているところを5分足に変えても、全く表示されません。 なぜ、すべてのデータが表示されないのでしょうか?何か見落としがあるのでしょうか? 削除済み 2009.01.17 10:02 #1535 良いEA - 助けが必要 こんにちは。 この素晴らしいフォーラムで、ストップロスなしでこのEAを修正できる方はいらっしゃいますか? ありがとうございます。 //---- 入力パラメータ -----------------------------------------------------------------------------+ extern int INCREMENT=35; extern double LOTS=0.1; extern int LEVELS=3; extern double MAX_LOTS=99; extern int MAGIC=1803; extern bool CONTINUE=true; extern bool MONEY_MANAGEMENT=false; extern int MONEY_MANAGEMENT=false; extern int RISK_RATIO=2; //+------------------------------------------------------------------+ bool UseProfitTarget=false。 bool UsePartialProfitTarget=false(ユースパーシャルプロフィットターゲット)。 int Target_Increment = 50; int First_Target = 20; bool UseEntryTime=false。 int EntryTime=0; //+------------------------------------------------------------------+ bool Enter=true。 int nextTP; int init() { //+------------------------------------------------------------------+ nextTP = First_Target; //+------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| エキスパートスタート関数 //+------------------------------------------------------------------+ int start() { int ticket, cpt, profit, total=0, BuyGoalProfit, SellGoalProfit, PipsLot; Double ProfitTarget=INCREMENT*2, BuyGoal=0, SellGoal=0, Spread=(Ask-Bid)/Point, InitialPrice=0; //---- if(INCREMENT<MarketInfo(Symbol(),MODE_STOPLEVEL)+spread) INCREMENT=1+MarketInfo(Symbol(),MODE_STOPLEVEL)+spread; if(MONEY_MANAGEMENT) LOTS=NormalizeDouble(AccountBalance()*AccountLeverage()/1000000*RISK_RATIO,0)*MarketInfo(Symbol(),MODE_MINLOT); if(LOTS<MarketInfo(Symbol(),MODE_MINLOT))。 { Comment("Not Enough Free Margin to begin"); return(0); } for(cpt=1;cpt<LEVELS;cpt++) PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT; for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())) { total++; if(!InitialPrice) InitialPrice=StrToDouble(OrderComment())です。 if(UsePartialProfitTarget && UseProfitTarget && OrderType()<2) { double val=getPipValue(OrderOpenPrice(),OrderType())。 takeProfit(val,OrderTicket())。 } } } if(total<1 && Enter && (!UseEntryTime || (UseEntryTime && Hour()==EntryTime))) { if(AccountFreeMargin()<(100*LOTS)) { Print("開始するのに十分なフリーマージンがありません"); return(0); } // - チェック開始 - サイクル開始 InitialPrice=Ask; SellGoal=InitialPrice-(LEVELS+1)*INCREMENT*Point; BuyGoal=InitialPrice+(LEVELS+1)*INCREMENT*Point.とします。 for(cpt=1;cpt<=LEVELS;cpt++) { オーダーセンド(Symbol(),OP_BUYSTOP,LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_SELLSTOP,LOTS,InitialPrice-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_Top,Lots,DoubleMarketInfo(Symbol),MODE_Digits,MAGIC,0); } }// 初期設定完了 - すべてのチャンネルが設定されました。 else // 開いている注文がある { BuyGoal=InitialPrice+INCREMENT*(LEVELS+1)*Point; SellGoal=InitialPrice-INCREMENT*(LEVELS+1)*ポイント; total=OrdersHistoryTotal(); for(cpt=0;cpt<total;cpt++) { OrderSelect(cpt,SELECT_BY_POS,MODE_HISTORY); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && StrToDouble(OrderComment())==InitialPrice){EndSession();return(0);}; }. } if(UseProfitTarget && CheckProfits(LOTS,OP_SELL,true,InitialPrice)>ProfitTarget) {EndSession();return(0);} {EndSession();return(0);} {CheckProfits(LOTS,OP_SELL,true,InitialPrice) BuyGoalProfit=CheckProfits(LOTS,OP_BUY,false,InitialPrice)となります。 SellGoalProfit=CheckProfits(LOTS,OP_SELL,false,InitialPrice)とします。 if(BuyGoalProfit<ProfitTarget)とする。 // ロット買い { for(cpt=LEVELS;cpt>=1 && BuyGoalProfit<ProfitTarget;cpt--) { if(Ask<=(InitialPrice+(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point)) { ticket=OrderSend(Symbol(),OP_BUYSTOP,cpt*LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).Ifは、初期価格です。 } if(ticket>0) BuyGoalProfit+=LOTS*(BuyGoal-InitialPrice-cpt*INCREMENT*Point)/Point; } } if(SellGoalProfit<ProfitTarget) // ロット増やし売り { for(cpt=LEVELS;cpt>=1 && SellGoalProfit<ProfitTarget;cpt--) { if(Bid>=(InitialPrice-(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point)) { ticket=OrderSend(Symbol(),OP_SELLSTOP,ct*LOTS,初値-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(初値、MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).を送信します。 } if(ticket>0) SellGoalProfit+=LOTS*(InitialPrice-cpt*INCREMENT*Point-SellGoal-spread*Point)/Point; } } } //+------------------------------------------------------------------+ Comment("mGRID EXPERT ADVISOR ver 2.0"), "FX Acc Server:",AccountServer(),"\n", "Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"ⅷ", 「最小ロット数:", MarketInfo(Symbol(),MODE_MINLOT),"\n", "口座残高: $",口座残高(),"ⅷ", "Symbol(シンボル)", Symbol(),"Ⅻn", "価格": ",NormalizeDouble(Bid,4),"Ⅻn", "Pipスプレッド: ",MarketInfo("EURUSD",MODE_SPREAD),"ⅷ", "Increment="+INCREMENT","Ⅻn", "ロット": ",LOTS,"ⅳn", "レベル":" + LEVELS,"Ⅾn"); return(0); } //+------------------------------------------------------------------+ int CheckProfits(double LOTS, int Goal, bool Current, double InitialPrice) { int profit=0, cpt; if(Current)//現在の利益を 返す { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots() if(OrderType()==OP_SELL) profit+=(OrderOpenPrice()-Ask)/Point*OrderLots()/LOTS.If(OrderType()==OP_SELL)の場合。 } } return(profit); } さもなくば { if(Goal==OP_BUY) { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) if(OrderTakeProfit()==OrderOpenPrice())/Point*OrderLots() if(OrderType()==OP_SELL)利益-=(OrderStopLoss()-OrderOpenPrice())/Point*OrderLots()/LOTS; if(OrderType()==OP_BUYSTOP) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS; } } return(profit); } さもなくば { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit-=(OrderOpenPrice()-OrderStopLoss())/Point*OrderLots()/LOTS; if(OrderType()==OP_SELL)利益+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS; if(OrderType()==OP_SELLSTOP) profit+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS.とする。 } } return(profit); } } } bool EndSession() { int cpt, total=OrdersTotal(); for(cpt=0;cpt<total;cpt++) { Sleep(3000); OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderType()>1) OrderDelete(OrderTicket()); else if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)オーダークローズ(OrderTicket(),OrderLots(),Bid,3); else if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3); else if(OrderSymbol()==Symbol() && OrderType() ==OP_SELL) OrderTicket(),OrderLots(),Ask,3) } if(!CONTINUE) Enter=false; return(true)とする。 } double getPipValue(double ord,int dir) { double val; RefreshRates()を使用します。 if(dir == 1) val=(NormalizeDouble(ord,Digits) - NormalizeDouble(Ask,Digits))です。 else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits)); val = val/Point; return(val); } //==================== FUNCTION takeProfit void takeProfit(int current_pips, int ticket) { if(OrderSelect(ticket, SELECT_BY_TICKET)) { if(current_pips >= nextTP && current_pips < (nextTP + Target_Increment)) { if(OrderType()==1) { if(OrderClose(ticket,MAX_LOTS,アスク,3)) nextTP+=Target_Increment となります。 さもなくば Print("Error closing order :",GetLastError()); } さもなくば { if(OrderClose(ticket, MAX_LOTS, Bid, 3)) nextTP+=Target_Increment; さもなくば Print("Error closing order :",GetLastError()); } } } } How to code? [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 [ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. pghiaci 2009.01.17 10:53 #1536 hkstar98:(一同)はーいこの素晴らしいフォーラムで、ストップロスなしでこのEAを修正できる方はいらっしゃいますか? ありがとうございます。 //---- 入力パラメータ -----------------------------------------------------------------------------+ extern int INCREMENT=35; extern double LOTS=0.1; extern int LEVELS=3; extern double MAX_LOTS=99; extern int MAGIC=1803; extern bool CONTINUE=true; extern bool MONEY_MANAGEMENT=false; extern int MONEY_MANAGEMENT=false; extern int RISK_RATIO=2; //+------------------------------------------------------------------+ bool UseProfitTarget=false。 bool UsePartialProfitTarget=false(ユースパーシャルプロフィットターゲット)。 int Target_Increment = 50; int First_Target = 20; bool UseEntryTime=false(ブールユースエントリータイム=ファルス)。 int EntryTime=0; //+------------------------------------------------------------------+ bool Enter=true。 int nextTP; int init() { //+------------------------------------------------------------------+ nextTP = First_Target; //+------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| エキスパートスタート関数 //+------------------------------------------------------------------+ int start() { int ticket, cpt, profit, total=0, BuyGoalProfit, SellGoalProfit, PipsLot; Double ProfitTarget=INCREMENT*2, BuyGoal=0, SellGoal=0, Spread=(Ask-Bid)/Point, InitialPrice=0; //---- if(INCREMENT<MarketInfo(Symbol(),MODE_STOPLEVEL)+spread) INCREMENT=1+MarketInfo(Symbol(),MODE_STOPLEVEL)+spread; if(MONEY_MANAGEMENT) LOTS=NormalizeDouble(AccountBalance()*AccountLeverage()/1000000*RISK_RATIO,0)*MarketInfo(Symbol(),MODE_MINLOT); if(LOTS<MarketInfo(Symbol(),MODE_MINLOT))。 { Comment("Not Enough Free Margin to begin"); return(0); } for(cpt=1;cpt<LEVELS;cpt++) PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT; for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())) { total++; if(!InitialPrice) InitialPrice=StrToDouble(OrderComment())です。 if(UsePartialProfitTarget && UseProfitTarget && OrderType()<2) { double val=getPipValue(OrderOpenPrice(),OrderType())。 takeProfit(val,OrderTicket())。 } } } if(total<1 && Enter && (!UseEntryTime || (UseEntryTime && Hour()==EntryTime))) { if(AccountFreeMargin()<(100*LOTS)) { Print("開始するのに十分なフリーマージンがありません"); return(0); } // - チェック開始 - サイクル開始 InitialPrice=Ask; SellGoal=InitialPrice-(LEVELS+1)*INCREMENT*Point; BuyGoal=InitialPrice+(LEVELS+1)*INCREMENT*Point.とします。 for(cpt=1;cpt<=LEVELS;cpt++) { オーダーセンド(Symbol(),OP_BUYSTOP,LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_SELLSTOP,LOTS,InitialPrice-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_Top,Lots,DoubleMarketInfo(Symbol),MODE_Digits,MAGIC,0); } }// 初期設定完了 - すべてのチャンネルが設定されました。 else // 開いている注文がある { BuyGoal=InitialPrice+INCREMENT*(LEVELS+1)*Point; SellGoal=InitialPrice-INCREMENT*(LEVELS+1)*ポイント; total=OrdersHistoryTotal(); for(cpt=0;cpt<total;cpt++) { OrderSelect(cpt,SELECT_BY_POS,MODE_HISTORY); if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && StrToDouble(OrderComment())==InitialPrice){EndSession();return(0);}; }. } if(UseProfitTarget && CheckProfits(LOTS,OP_SELL,true,InitialPrice)>ProfitTarget) {EndSession();return(0);} {EndSession();return(0);} {CheckProfits(LOTS,OP_SELL,true,InitialPrice) BuyGoalProfit=CheckProfits(LOTS,OP_BUY,false,InitialPrice)となります。 SellGoalProfit=CheckProfits(LOTS,OP_SELL,false,InitialPrice)とします。 if(BuyGoalProfit<ProfitTarget)とする。 // ロット買い { for(cpt=LEVELS;cpt>=1 && BuyGoalProfit<ProfitTarget;cpt--) { if(Ask<=(InitialPrice+(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point)) { ticket=OrderSend(Symbol(),OP_BUYSTOP,cpt*LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).Ifは、初期価格です。 } if(ticket>0) BuyGoalProfit+=LOTS*(BuyGoal-InitialPrice-cpt*INCREMENT*Point)/Point; } } if(SellGoalProfit<ProfitTarget) // ロット増やし売り { for(cpt=LEVELS;cpt>=1 && SellGoalProfit<ProfitTarget;cpt--) { if(Bid>=(InitialPrice-(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point)) { ticket=OrderSend(Symbol(),OP_SELLSTOP,ct*LOTS,初値-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(初値、MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).とします。 } if(ticket>0) SellGoalProfit+=LOTS*(InitialPrice-cpt*INCREMENT*Point-SellGoal-spread*Point)/Point; } } } //+------------------------------------------------------------------+ Comment("mGRID EXPERT ADVISOR ver 2.0"), "FX Acc Server:",AccountServer(),"\n", "Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"ⅷ", 「最小ロット数:", MarketInfo(Symbol(),MODE_MINLOT),"\n", "口座残高: $",口座残高(),"ⅷ", "Symbol(シンボル)", Symbol(),"Ⅻn", "価格": ",NormalizeDouble(Bid,4),"Ⅻn", "Pipスプレッド: ",MarketInfo("EURUSD",MODE_SPREAD),"ⅷ", "Increment="+INCREMENT","Ⅻn", "ロット": ",LOTS,"ⅳn", "レベル":" + LEVELS,"Ⅾn"); return(0); } //+------------------------------------------------------------------+ int CheckProfits(double LOTS, int Goal, bool Current, double InitialPrice) { int profit=0, cpt; if(Current)//現在の利益を返す { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots() if(OrderType()==OP_SELL) profit+=(OrderOpenPrice()-Ask)/Point*OrderLots()/LOTS.If(OrderType()==OP_SELL)の場合。 } } return(profit); } さもなくば { if(Goal==OP_BUY) { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) if(OrderTakeProfit()==OrderOpenPrice())/Point*OrderLots() if(OrderType()==OP_SELL)利益-=(OrderStopLoss()-OrderOpenPrice())/Point*OrderLots()/LOTS; if(OrderType()==OP_BUYSTOP) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS; } } return(profit); } さもなくば { for(cpt=0;cpt<OrdersTotal();cpt++) { OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES); if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。 { if(OrderType()==OP_BUY) profit-=(OrderOpenPrice()-OrderStopLoss())/Point*OrderLots()/LOTS; if(OrderType()==OP_SELL)利益+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS; if(OrderType()==OP_SELLSTOP) profit+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS.とする。 } } return(profit); } } } bool EndSession() { int cpt, total=OrdersTotal(); for(cpt=0;cpt<total;cpt++) { Sleep(3000); OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderType()>1) OrderDelete(OrderTicket()); else if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)オーダークローズ(OrderTicket(),OrderLots(),Bid,3); else if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3); else if(OrderSymbol()==Symbol() && OrderType() ==OP_SELL) OrderTicket(),OrderLots(),Ask,3) } if(!CONTINUE) Enter=false; return(true)とする。 } double getPipValue(double ord,int dir) { double val; RefreshRates()を使用します。 if(dir == 1) val=(NormalizeDouble(ord,Digits) - NormalizeDouble(Ask,Digits))です。 else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits)); val = val/Point; return(val); } //==================== FUNCTION takeProfit void takeProfit(int current_pips, int ticket) { if(OrderSelect(ticket, SELECT_BY_TICKET)) { if(current_pips >= nextTP && current_pips < (nextTP + Target_Increment)) { if(OrderType()==1) { if(OrderClose(ticket,MAX_LOTS,アスク,3)) nextTP+=Target_Increment となります。 さもなくば Print("Error closing order :",GetLastError()); } さもなくば { if(OrderClose(ticket, MAX_LOTS, Bid, 3)) nextTP+=Target_Increment; さもなくば Print("Error closing order :",GetLastError()); } } } } こんにちは はい、どうぞ ファイル: new.mq4 8 kb 削除済み 2009.01.18 00:22 #1537 codersguru: jdun,SLとTPのコードはすでにこのEAに書き込まれています。 この行を見てください。 if (Symbol()=="GBPUSD") { PipsForEntry= 13; TrailingStop = 40; TakeProfit = 45; InitialStopLoss=33; } else if (Symbol()=="EURUSD") { PipsForEntry= 13; TrailingStop = 30; TakeProfit = 45; InitialStopLoss=23; } else if (Symbol()=="USDCHF") { PipsForEntry= 13; TrailingStop = 30; TakeProfit = 45; InitialStopLoss=15; } else { PipsForEntry= 13; TrailingStop = 30; TakeProfit = 45; InitialStopLoss=30; } [/PHP] If you want to make SL & TP external variables which you can set, you have to comment the above lines of code and uncomment these lines: [PHP]/* extern int PipsForEntry= 5; extern double TrailingStop = 40; extern double TakeProfit = 120; extern double InitialStopLoss=50; */ mcmalach 2009.01.18 02:03 #1538 シグナルごとの最大取引数 シグナルごとの取引数を制限するために何を使うか誰か知っていますか(私はシグナルごとに1つの取引をしたいのですが、8つのようなものを得ていて、最後のものはいつも負けています) 削除済み 2009.01.18 06:41 #1539 ヘルプ はい。 ストップロスが残って います pghiaci: こんにちは、どうぞ garhardt 2009.01.20 19:55 #1540 複数のカスタム時間を持つEA? 私はEAが複数のタイムフレームで作られることを理解していますが、カスタムタイムで書かれることは可能ですか? 私はMTFを持つEAを持っていますが、デフォルトの時間ではなく、カスタム時間が必要なので、それほど頻繁に「並ばない」のです。 よろしくお願いします。 1...147148149150151152153154155156157158159160161...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
キコウシ。
最適な座標を自分でテストしてみてはいかがでしょうか。 FerruFXとCJAは、デフォルトのコーナーポジションを持ち、ユーザーがオブジェクトの配置に入力するという最良の解決策を採用しています。 また、OBJPROP_CORNERも参考にしてみてください。
また、同じ要望を投稿しないように心がけてください。 ユーザーはあなたの投稿を見ますし、誰かがあなたを助けることができるのであれば、そうするでしょう。
ありがとうございました。
編集:コーナープロパティ 0が左上、1が右上、2が左下、3が右下を使用しています。 0カウントとなります。
私のEAをデバッグするためのヘルプ
こんにちは、もしこれが投稿するのに間違ったフォーラムであれば申し訳ありません。
私は私自身のEAをプログラムし、注文の充填と ストップロス注文でいくつかの問題を抱えています。 誰かが助けることができますか?私はEAを共有することができます。
ありがとうございます。
codobroさん
ご丁寧にご返信いただき、誠にありがとうございました。
今後、同じ質問を投稿しないようにします。
ご指摘ありがとうございます。
ちなみに、左上の位置は(0,0)だそうですが、その時の右下の指示は何でしょうか?
例えば、左上の位置が(0,0)の時、右下の表示は(250,350)でいいのでしょうか?
以上、ご教示のほど、よろしくお願いいたします。
インジケーターグラフにすべてのデータが表示されない
こんにちは。
私はC言語プログラミングは得意ですが、MQL4から始めました。
初めてインジケータを作ったのですが、別ウィンドウに部分的に配列が表示されます。
部分的にというのは、左にスクロールすると、ある期間は何も表示されず、さらに左にスクロールすると、ある期間のデータが表示され、といった具合です。
右へスクロールすると、同じ期間のデータは表示されません。
それ以外にはパターンが見当たりません。
また、1分足のデータが表示されているところを5分足に変えても、全く表示されません。
なぜ、すべてのデータが表示されないのでしょうか?何か見落としがあるのでしょうか?
良いEA - 助けが必要
こんにちは。
この素晴らしいフォーラムで、ストップロスなしでこのEAを修正できる方はいらっしゃいますか?
ありがとうございます。
//---- 入力パラメータ -----------------------------------------------------------------------------+
extern int INCREMENT=35;
extern double LOTS=0.1;
extern int LEVELS=3;
extern double MAX_LOTS=99;
extern int MAGIC=1803;
extern bool CONTINUE=true;
extern bool MONEY_MANAGEMENT=false; extern int MONEY_MANAGEMENT=false;
extern int RISK_RATIO=2;
//+------------------------------------------------------------------+
bool UseProfitTarget=false。
bool UsePartialProfitTarget=false(ユースパーシャルプロフィットターゲット)。
int Target_Increment = 50;
int First_Target = 20;
bool UseEntryTime=false。
int EntryTime=0;
//+------------------------------------------------------------------+
bool Enter=true。
int nextTP;
int init()
{
//+------------------------------------------------------------------+
nextTP = First_Target;
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート関数
//+------------------------------------------------------------------+
int start()
{
int ticket, cpt, profit, total=0, BuyGoalProfit, SellGoalProfit, PipsLot;
Double ProfitTarget=INCREMENT*2, BuyGoal=0, SellGoal=0, Spread=(Ask-Bid)/Point, InitialPrice=0;
//----
if(INCREMENT<MarketInfo(Symbol(),MODE_STOPLEVEL)+spread) INCREMENT=1+MarketInfo(Symbol(),MODE_STOPLEVEL)+spread;
if(MONEY_MANAGEMENT) LOTS=NormalizeDouble(AccountBalance()*AccountLeverage()/1000000*RISK_RATIO,0)*MarketInfo(Symbol(),MODE_MINLOT);
if(LOTS<MarketInfo(Symbol(),MODE_MINLOT))。
{
Comment("Not Enough Free Margin to begin");
return(0);
}
for(cpt=1;cpt<LEVELS;cpt++) PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT;
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol()))
{
total++;
if(!InitialPrice) InitialPrice=StrToDouble(OrderComment())です。
if(UsePartialProfitTarget && UseProfitTarget && OrderType()<2)
{
double val=getPipValue(OrderOpenPrice(),OrderType())。
takeProfit(val,OrderTicket())。
}
}
}
if(total<1 && Enter && (!UseEntryTime || (UseEntryTime && Hour()==EntryTime)))
{
if(AccountFreeMargin()<(100*LOTS))
{
Print("開始するのに十分なフリーマージンがありません");
return(0);
}
// - チェック開始 - サイクル開始
InitialPrice=Ask;
SellGoal=InitialPrice-(LEVELS+1)*INCREMENT*Point;
BuyGoal=InitialPrice+(LEVELS+1)*INCREMENT*Point.とします。
for(cpt=1;cpt<=LEVELS;cpt++)
{
オーダーセンド(Symbol(),OP_BUYSTOP,LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0);
OrderSend(Symbol(),OP_SELLSTOP,LOTS,InitialPrice-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_Top,Lots,DoubleMarketInfo(Symbol),MODE_Digits,MAGIC,0);
}
}// 初期設定完了 - すべてのチャンネルが設定されました。
else // 開いている注文がある
{
BuyGoal=InitialPrice+INCREMENT*(LEVELS+1)*Point;
SellGoal=InitialPrice-INCREMENT*(LEVELS+1)*ポイント;
total=OrdersHistoryTotal();
for(cpt=0;cpt<total;cpt++)
{
OrderSelect(cpt,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && StrToDouble(OrderComment())==InitialPrice){EndSession();return(0);}; }.
}
if(UseProfitTarget && CheckProfits(LOTS,OP_SELL,true,InitialPrice)>ProfitTarget) {EndSession();return(0);} {EndSession();return(0);} {CheckProfits(LOTS,OP_SELL,true,InitialPrice)
BuyGoalProfit=CheckProfits(LOTS,OP_BUY,false,InitialPrice)となります。
SellGoalProfit=CheckProfits(LOTS,OP_SELL,false,InitialPrice)とします。
if(BuyGoalProfit<ProfitTarget)とする。
// ロット買い
{
for(cpt=LEVELS;cpt>=1 && BuyGoalProfit<ProfitTarget;cpt--)
{
if(Ask<=(InitialPrice+(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point))
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,cpt*LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).Ifは、初期価格です。
}
if(ticket>0) BuyGoalProfit+=LOTS*(BuyGoal-InitialPrice-cpt*INCREMENT*Point)/Point;
}
}
if(SellGoalProfit<ProfitTarget)
// ロット増やし売り
{
for(cpt=LEVELS;cpt>=1 && SellGoalProfit<ProfitTarget;cpt--)
{
if(Bid>=(InitialPrice-(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point))
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,ct*LOTS,初値-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(初値、MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).を送信します。
}
if(ticket>0) SellGoalProfit+=LOTS*(InitialPrice-cpt*INCREMENT*Point-SellGoal-spread*Point)/Point;
}
}
}
//+------------------------------------------------------------------+
Comment("mGRID EXPERT ADVISOR ver 2.0"),
"FX Acc Server:",AccountServer(),"\n",
"Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"ⅷ",
「最小ロット数:", MarketInfo(Symbol(),MODE_MINLOT),"\n",
"口座残高: $",口座残高(),"ⅷ",
"Symbol(シンボル)", Symbol(),"Ⅻn",
"価格": ",NormalizeDouble(Bid,4),"Ⅻn",
"Pipスプレッド: ",MarketInfo("EURUSD",MODE_SPREAD),"ⅷ",
"Increment="+INCREMENT","Ⅻn",
"ロット": ",LOTS,"ⅳn",
"レベル":" + LEVELS,"Ⅾn");
return(0);
}
//+------------------------------------------------------------------+
int CheckProfits(double LOTS, int Goal, bool Current, double InitialPrice)
{
int profit=0, cpt;
if(Current)//現在の利益を 返す
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()
if(OrderType()==OP_SELL) profit+=(OrderOpenPrice()-Ask)/Point*OrderLots()/LOTS.If(OrderType()==OP_SELL)の場合。
}
}
return(profit);
}
さもなくば
{
if(Goal==OP_BUY)
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) if(OrderTakeProfit()==OrderOpenPrice())/Point*OrderLots()
if(OrderType()==OP_SELL)利益-=(OrderStopLoss()-OrderOpenPrice())/Point*OrderLots()/LOTS;
if(OrderType()==OP_BUYSTOP) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS;
}
}
return(profit);
}
さもなくば
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit-=(OrderOpenPrice()-OrderStopLoss())/Point*OrderLots()/LOTS;
if(OrderType()==OP_SELL)利益+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS;
if(OrderType()==OP_SELLSTOP) profit+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS.とする。
}
}
return(profit);
}
}
}
bool EndSession()
{
int cpt, total=OrdersTotal();
for(cpt=0;cpt<total;cpt++)
{
Sleep(3000);
OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()>1) OrderDelete(OrderTicket());
else if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)オーダークローズ(OrderTicket(),OrderLots(),Bid,3);
else if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3); else if(OrderSymbol()==Symbol() && OrderType() ==OP_SELL) OrderTicket(),OrderLots(),Ask,3)
}
if(!CONTINUE) Enter=false;
return(true)とする。
}
double getPipValue(double ord,int dir)
{
double val;
RefreshRates()を使用します。
if(dir == 1) val=(NormalizeDouble(ord,Digits) - NormalizeDouble(Ask,Digits))です。
else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits));
val = val/Point;
return(val);
}
//==================== FUNCTION takeProfit
void takeProfit(int current_pips, int ticket)
{
if(OrderSelect(ticket, SELECT_BY_TICKET))
{
if(current_pips >= nextTP && current_pips < (nextTP + Target_Increment))
{
if(OrderType()==1)
{
if(OrderClose(ticket,MAX_LOTS,アスク,3))
nextTP+=Target_Increment となります。
さもなくば
Print("Error closing order :",GetLastError());
}
さもなくば
{
if(OrderClose(ticket, MAX_LOTS, Bid, 3))
nextTP+=Target_Increment;
さもなくば
Print("Error closing order :",GetLastError());
}
}
}
}
(一同)はーい
この素晴らしいフォーラムで、ストップロスなしでこのEAを修正できる方はいらっしゃいますか?
ありがとうございます。
//---- 入力パラメータ -----------------------------------------------------------------------------+
extern int INCREMENT=35;
extern double LOTS=0.1;
extern int LEVELS=3;
extern double MAX_LOTS=99;
extern int MAGIC=1803;
extern bool CONTINUE=true;
extern bool MONEY_MANAGEMENT=false; extern int MONEY_MANAGEMENT=false;
extern int RISK_RATIO=2;
//+------------------------------------------------------------------+
bool UseProfitTarget=false。
bool UsePartialProfitTarget=false(ユースパーシャルプロフィットターゲット)。
int Target_Increment = 50;
int First_Target = 20;
bool UseEntryTime=false(ブールユースエントリータイム=ファルス)。
int EntryTime=0;
//+------------------------------------------------------------------+
bool Enter=true。
int nextTP;
int init()
{
//+------------------------------------------------------------------+
nextTP = First_Target;
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| エキスパートスタート関数
//+------------------------------------------------------------------+
int start()
{
int ticket, cpt, profit, total=0, BuyGoalProfit, SellGoalProfit, PipsLot;
Double ProfitTarget=INCREMENT*2, BuyGoal=0, SellGoal=0, Spread=(Ask-Bid)/Point, InitialPrice=0;
//----
if(INCREMENT<MarketInfo(Symbol(),MODE_STOPLEVEL)+spread) INCREMENT=1+MarketInfo(Symbol(),MODE_STOPLEVEL)+spread;
if(MONEY_MANAGEMENT) LOTS=NormalizeDouble(AccountBalance()*AccountLeverage()/1000000*RISK_RATIO,0)*MarketInfo(Symbol(),MODE_MINLOT);
if(LOTS<MarketInfo(Symbol(),MODE_MINLOT))。
{
Comment("Not Enough Free Margin to begin");
return(0);
}
for(cpt=1;cpt<LEVELS;cpt++) PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT.PipsLot+=cpt*INCREMENT;
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol()))
{
total++;
if(!InitialPrice) InitialPrice=StrToDouble(OrderComment())です。
if(UsePartialProfitTarget && UseProfitTarget && OrderType()<2)
{
double val=getPipValue(OrderOpenPrice(),OrderType())。
takeProfit(val,OrderTicket())。
}
}
}
if(total<1 && Enter && (!UseEntryTime || (UseEntryTime && Hour()==EntryTime)))
{
if(AccountFreeMargin()<(100*LOTS))
{
Print("開始するのに十分なフリーマージンがありません");
return(0);
}
// - チェック開始 - サイクル開始
InitialPrice=Ask;
SellGoal=InitialPrice-(LEVELS+1)*INCREMENT*Point;
BuyGoal=InitialPrice+(LEVELS+1)*INCREMENT*Point.とします。
for(cpt=1;cpt<=LEVELS;cpt++)
{
オーダーセンド(Symbol(),OP_BUYSTOP,LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0);
OrderSend(Symbol(),OP_SELLSTOP,LOTS,InitialPrice-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0); OrderSend(Symbol(),OP_Top,Lots,DoubleMarketInfo(Symbol),MODE_Digits,MAGIC,0);
}
}// 初期設定完了 - すべてのチャンネルが設定されました。
else // 開いている注文がある
{
BuyGoal=InitialPrice+INCREMENT*(LEVELS+1)*Point;
SellGoal=InitialPrice-INCREMENT*(LEVELS+1)*ポイント;
total=OrdersHistoryTotal();
for(cpt=0;cpt<total;cpt++)
{
OrderSelect(cpt,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC && StrToDouble(OrderComment())==InitialPrice){EndSession();return(0);}; }.
}
if(UseProfitTarget && CheckProfits(LOTS,OP_SELL,true,InitialPrice)>ProfitTarget) {EndSession();return(0);} {EndSession();return(0);} {CheckProfits(LOTS,OP_SELL,true,InitialPrice)
BuyGoalProfit=CheckProfits(LOTS,OP_BUY,false,InitialPrice)となります。
SellGoalProfit=CheckProfits(LOTS,OP_SELL,false,InitialPrice)とします。
if(BuyGoalProfit<ProfitTarget)とする。
// ロット買い
{
for(cpt=LEVELS;cpt>=1 && BuyGoalProfit<ProfitTarget;cpt--)
{
if(Ask<=(InitialPrice+(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point))
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,cpt*LOTS,InitialPrice+cpt*INCREMENT*Point,2,SellGoal,BuyGoal,DoubleToStr(InitialPrice,MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).Ifは、初期価格です。
}
if(ticket>0) BuyGoalProfit+=LOTS*(BuyGoal-InitialPrice-cpt*INCREMENT*Point)/Point;
}
}
if(SellGoalProfit<ProfitTarget)
// ロット増やし売り
{
for(cpt=LEVELS;cpt>=1 && SellGoalProfit<ProfitTarget;cpt--)
{
if(Bid>=(InitialPrice-(cpt*INCREMENT-MarketInfo(Symbol(),MODE_STOPLEVEL))*Point))
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,ct*LOTS,初値-cpt*INCREMENT*Point,2,BuyGoal+spread*Point,SellGoal+spread*Point,DoubleToStr(初値、MarketInfo(Symbol(),MODE_DIGITS)),MAGIC,0).とします。
}
if(ticket>0) SellGoalProfit+=LOTS*(InitialPrice-cpt*INCREMENT*Point-SellGoal-spread*Point)/Point;
}
}
}
//+------------------------------------------------------------------+
Comment("mGRID EXPERT ADVISOR ver 2.0"),
"FX Acc Server:",AccountServer(),"\n",
"Date: ",Month(),"-",Day(),"-",Year()," Server Time: ",Hour(),":",Minute(),":",Seconds(),"ⅷ",
「最小ロット数:", MarketInfo(Symbol(),MODE_MINLOT),"\n",
"口座残高: $",口座残高(),"ⅷ",
"Symbol(シンボル)", Symbol(),"Ⅻn",
"価格": ",NormalizeDouble(Bid,4),"Ⅻn",
"Pipスプレッド: ",MarketInfo("EURUSD",MODE_SPREAD),"ⅷ",
"Increment="+INCREMENT","Ⅻn",
"ロット": ",LOTS,"ⅳn",
"レベル":" + LEVELS,"Ⅾn");
return(0);
}
//+------------------------------------------------------------------+
int CheckProfits(double LOTS, int Goal, bool Current, double InitialPrice)
{
int profit=0, cpt;
if(Current)//現在の利益を返す
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) profit+=(Bid-OrderOpenPrice())/Point*OrderLots()
if(OrderType()==OP_SELL) profit+=(OrderOpenPrice()-Ask)/Point*OrderLots()/LOTS.If(OrderType()==OP_SELL)の場合。
}
}
return(profit);
}
さもなくば
{
if(Goal==OP_BUY)
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS.If(OrderType()==OP_BUY) if(OrderTakeProfit()==OrderOpenPrice())/Point*OrderLots()
if(OrderType()==OP_SELL)利益-=(OrderStopLoss()-OrderOpenPrice())/Point*OrderLots()/LOTS;
if(OrderType()==OP_BUYSTOP) profit+=(OrderTakeProfit()-OrderOpenPrice())/Point*OrderLots()/LOTS;
}
}
return(profit);
}
さもなくば
{
for(cpt=0;cpt<OrdersTotal();cpt++)
{
OrderSelect(cpt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && StrToDouble(OrderComment())==InitialPrice)。
{
if(OrderType()==OP_BUY) profit-=(OrderOpenPrice()-OrderStopLoss())/Point*OrderLots()/LOTS;
if(OrderType()==OP_SELL)利益+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS;
if(OrderType()==OP_SELLSTOP) profit+=(OrderOpenPrice()-OrderTakeProfit())/Point*OrderLots()/LOTS.とする。
}
}
return(profit);
}
}
}
bool EndSession()
{
int cpt, total=OrdersTotal();
for(cpt=0;cpt<total;cpt++)
{
Sleep(3000);
OrderSelect(cpt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()>1) OrderDelete(OrderTicket());
else if(OrderSymbol()==Symbol() && OrderType()==OP_BUY)オーダークローズ(OrderTicket(),OrderLots(),Bid,3);
else if(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3); else if(OrderSymbol()==Symbol() && OrderType() ==OP_SELL) OrderTicket(),OrderLots(),Ask,3)
}
if(!CONTINUE) Enter=false;
return(true)とする。
}
double getPipValue(double ord,int dir)
{
double val;
RefreshRates()を使用します。
if(dir == 1) val=(NormalizeDouble(ord,Digits) - NormalizeDouble(Ask,Digits))です。
else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits));
val = val/Point;
return(val);
}
//==================== FUNCTION takeProfit
void takeProfit(int current_pips, int ticket)
{
if(OrderSelect(ticket, SELECT_BY_TICKET))
{
if(current_pips >= nextTP && current_pips < (nextTP + Target_Increment))
{
if(OrderType()==1)
{
if(OrderClose(ticket,MAX_LOTS,アスク,3))
nextTP+=Target_Increment となります。
さもなくば
Print("Error closing order :",GetLastError());
}
さもなくば
{
if(OrderClose(ticket, MAX_LOTS, Bid, 3))
nextTP+=Target_Increment;
さもなくば
Print("Error closing order :",GetLastError());
}
}
}
}こんにちは
はい、どうぞ
jdun,
SLとTPのコードはすでにこのEAに書き込まれています。
この行を見てください。
PipsForEntry= 13;
TrailingStop = 40;
TakeProfit = 45;
InitialStopLoss=33;
} else if (Symbol()=="EURUSD") {
PipsForEntry= 13;
TrailingStop = 30;
TakeProfit = 45;
InitialStopLoss=23;
} else if (Symbol()=="USDCHF") {
PipsForEntry= 13;
TrailingStop = 30;
TakeProfit = 45;
InitialStopLoss=15;
} else {
PipsForEntry= 13;
TrailingStop = 30;
TakeProfit = 45;
InitialStopLoss=30;
} [/PHP]
If you want to make SL & TP external variables which you can set, you have to comment the above lines of code and uncomment these lines:
[PHP]/*
extern int PipsForEntry= 5;
extern double TrailingStop = 40;
extern double TakeProfit = 120;
extern double InitialStopLoss=50;
*/シグナルごとの最大取引数
シグナルごとの取引数を制限するために何を使うか誰か知っていますか(私はシグナルごとに1つの取引をしたいのですが、8つのようなものを得ていて、最後のものはいつも負けています)
ヘルプ
はい。
ストップロスが残って います
こんにちは、どうぞ
複数のカスタム時間を持つEA?
私はEAが複数のタイムフレームで作られることを理解していますが、カスタムタイムで書かれることは可能ですか? 私はMTFを持つEAを持っていますが、デフォルトの時間ではなく、カスタム時間が必要なので、それほど頻繁に「並ばない」のです。
よろしくお願いします。