externint TakeProfit = 150;
externdouble Lot = 0.01;
externint MAGIC=1234;
//=====================================================================int start()
{
if (DistMarketAndPos(NULL,OP_BUY)>150)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Point);
}
if (DistMarketAndPos(NULL,OP_SELL)>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point);
}
return(0);
}
//======================================================================== //+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает расстояние в пунктах между рынком и ближайшей |//| позицей |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int DistMarketAndPos(string sy="", int op=-1, int mn=-1) {
double d, p;
int i, k=OrdersTotal(), r=1000000;
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy) && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL) {
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r);
}
DistMarketAndPos()関数。
さあ、始まるぞさらに面白い機能が登場例えば、相場と最も近いポジションとの距離をpips単位で返します。チェックする位置をより正確に選択するために、外部パラメータで設定します。
DistMarketAndPos()関数です。
さあ、始まるぞもっと面白い機能へ行こう!例えば、マーケットと最も近いポジションの距離をポイントで返します。チェックする位置をより正確に選択するために、外部パラメータで設定します。
私はそれが前後に動作するようにしようとすると、前後に注文を開く。 私は1つのエラーを持っている、それを修正するために私を助けてください。
extern int TakeProfit = 150;
extern double Lot = 0.01;
extern inttern MAGIC = 1234;
int start()
{
if (DistMarketAndPos()>150)
{
オーダー送信(シンボル()、OP_BUY、ロット、アスク、3,0、アスク+TakeProfit*ポイント)
}
return(0)です。
}
int DistMarketAndPos(string sy="", int op=OP_BUY, int mn=-1)
{
ダブルディー、ピー
int i, k=OrdersTotal(), r=1000000;
if (sy==" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "")<0) p=0.00001; else p=0.01;
for (i=0; i<k; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if ((OrderSymbol()==sy))&& (op<0 || OrderType()==op))
{
if (mn<0 || OrderMagicNumber()==mn))
{
if (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------------------------------------
if (DistMarketAndPos()>150)
{
OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Point)を実行します。
}
return(0)です。
{
int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //この行は1つのエラーを発生させます。
//この行が削除された場合。
//コンパイルされますが、その後
//op=OP_SELLを付けない。
//それがないと、Expert Advisor は考えます。
//計算したい順番があること
//距離はOP_BUY
if (sy==" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "")<0) p=0.00001; else p=0.01;
for (i=0; i<k; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if ((OrderSymbol()==sy))&& (op<0 || OrderType()==op))
{
if (mn<0 || OrderMagicNumber()==mn))
{
if (OrderType()==OP_BUY)
{
d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
if (r>d) r=NormalizeDouble(d, 0);
}
if (OrderType()==OP_SELL)
{
d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p。
if (r>d) r=NormalizeDouble(d, 0);
}
}
}
}
}
return(r)です。
return(r)です。
}
}
//-------------------------------------------------------------------------------------------
ありがとうございました
前後して動作させ、それで前後して注文を出すようにしているのですが、1つだけどうしても解消できないバグが あるので、修正するのを手伝ってください。
ありがとうございました
ぜひ試してみてください。
そして、ここでの 質問で・・・。
MovingInWL()関数。
なぜ動作しない機能を掲載しなければならないのか、誰か説明してください。
'LevelWLoss' - 宣言されていない識別子
'LevelProfit' - 宣言されていない識別子
'ModifyOrder' -関数 not defined
'LevelWLoss' - 宣言されていない識別子
'LevelProfit' - 宣言されていない識別子
'ModifyOrder' - 関数 not defined
6 エラー(s)、0 警告(s)。
そして、この関数自体の中で
なぜ動作しない機能を掲載しなければならないのか、誰か説明してください。
'LevelWLoss' - 宣言されていない識別子
'LevelProfit' - 宣言されていない識別子
'ModifyOrder' - 関数 not defined
'LevelWLoss' - 宣言されていない識別子
'LevelProfit' - 宣言されていない識別子
'ModifyOrder' - 関数 not defined
6 エラー(s)、0 警告(s)。
そして、これは関数自体の内部です。
この関数は動作しますが、ModifyOrder関数を呼び出すので、EAコードに追加し、変数LevelWLossとLevelProfitもEAに追加して、以下のようなものにする必要があります。
extern int LevelProfit = 1000;
extern int LevelWLoss = 50;
このフォーラムのスレッドには本当に感謝しています。特集を組んだlurii Tokmanに最大の感謝を捧げます。個人的には、ほぼストロストラップと同列に考えています。
ありがとうございました。
GetAmountLotFromOpenPos()関数を使用します。
この関数は、オープンポジションのロットの合計を返します。考慮すべき位置をより正確に選択するために、外部パラメータで指定します。
帰らない!!!
どうやっても、ゼロか「イベント処理関数が 見つかりません」 4.mq4 1 1
"
このフォーラムのスレッドには本当に感謝しています。特集を組んだlurii Tokmanに最大の感謝を捧げます。個人的には、ストロストラップと同列に並べてもいいくらいです。
ありがとうございました。