• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【MQL4】ZigZagの天底の値の取得)

【MQL4】ZigZagの天底の値の取得

このQ&Aのポイント
  • 最近MT4の入門書を買ってMQL4の勉強を始めた者です。よろしくお願いします。
  • EAでZigZagの天底を現在レートがブレイクアウトしたところでエントリーするシステムを作りたいのですが、ZigZagの頂点(底点)の値の取得の仕方がわかりません。
  • おそらく見当違いのことをしているのだとは思います。私が知りたいことは以下の2点です。1.一つ前のZigZagの頂点(底点)の値。2.二つ前のZigZagの頂点(底点)の値。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ZigZagの場合、頂点と頂点の間は空値が入っています。 ZigZagは頂点よりもその間を繋いでいる線の部分の方が圧倒的に多いです。ですからそのEAのiCustom関数はほとんどの場合、空値を返します。 さらにZigZagのmql文の中を見てみると34行目に SetIndexEmptyValue(0,0.0); http://www.metasys-seeker.net/MQL4_Reference_ver1/11-08_SetIndexEmptyValue.html の一文が入っていることが分かりますよね。 これは空値を0.0に設定するという意味です。つまりそのiCustom関数ではほとんどの場合0が返されています。 SC11さんのEAではif文中で zig<Ask と書かれているので(以下略)。 低点の見つけ方ですが、私なら頂点を一つづつ探していき、一つ見つかったらその前後の頂点を探して、最初に見つけた頂点が次に見つけた2つの頂点の値より下回っていたら低点であるとします。 普通は見つかった順番に配列に入れておきます。こうするといくつ前の低点なのか分かりますしね。

SC11
質問者

お礼

昔の質問にまでご回答いただき本当にありがとうございます。(締め切っていないせいですが) 実は私は今はEAから離れてしまい裁量でトレードしておりまして、 かなり当時の記憶が薄れてしまっています。 ですが回答していただいたことには大変感謝しております。 ps2-arfiu4様の解説が皆様の役に立つことを願います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • agent_k
  • ベストアンサー率82% (37/45)
回答No.1

ZigZagは頂点と低点をつけた時にだけ、値を返します。 例文にある記述ですと、shift値が0では今現在の足が頂点となっている時しか、この条件式は希望どおりの動きをしないでしょう。 過去につけたピークを取得したい場合は iCustom関数の最後の引数であるshift値をfor文を使って+1ずつ変化させ、値が現れたら変数にいれる。という形を私は取っています。 複数取得したい場合は、1つ目のピークを付けたshift値+1から再開し、また値が現れたら別の変数に入れればOKです。この辺のやり方はいろんな方法があると思いますので、考えてみてください。

SC11
質問者

補足

ご回答ありがとうございます。アドバイスをもとにやり方を考えたみましたがどうもうまくいきません。 私はfor文を使うのはこれがはじめてというくらいの素人なので、ちょっとやろうとしていることのハードルが高いのかもしれません。私が書いたプログラムを載せておきます。このプログラムですと全く意図していない所でエントリーしてしまいます。やはり見当違いのことをしているのだとは思います。もしよろしければヒントを頂けないでしょうか? double zig; double ZigNo1; int a; int b = 0; for (a=1; a<100; a++) { zig = iCustom(NULL,0,"ZigZag",12,5,13,0,b); b++; if(zig>0) { ZigNo1 = zig; a = 100; } } if(High[1]<ZigNo1 && ZigNo1<High[0]) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue); }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MT4のSendOrderについて

    最近MetaTrader4(MT4)に興味を持ち始めたものです。 早速試しに簡単なEAを作ってみているのですが、 OrderSendを行う際に思う様に約定できずこまっています。 詳細としてはOrderSendにて、成行注文と同時に利益確定注文、 損切り注文をだしていますが、常にチケットが「-1」で約定する気配がありません。 問題となっている部分は利益確定と損切り注文の部分である可能性が非常に高いです。 通貨:EUR/USD デモ口座:OLD、Forex ※OLDは成行注文と利益確定、損切りを同時に出せない? 一部買い注文する部分のソースを抜粋します。 //損切、利確用変数初期化 double TakeProfit = 0.0020; double StopLoss = 0.0015; //現在の終値より損切、利確の値の計算 TakeProfit = Close[0] + TakeProfit; StopLoss = Close[0] - StopLoss; //注文 Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,StopLoss,TakeProfit,Comments,MAGIC,0,Red); ちなみに「利益確定と損切り注文の部分である可能性が非常に高い」の理由としては 以下の様に、利益確定と損切りをしない注文を行うと正常に約定されるためです。 Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,Comments,MAGIC,0,Red); 利益確定と損切り注文が取得ポジションに近すぎるのかな?とも少しおもっているのですが、 ストップレベルという値を取得するとわかるみたいな情報があったので、取得してみると、 「ストップレベル:1.00000000」この値についてもどう解釈すればよいのかが不明です。 この内容で質問として情報が足りているか少し不安ですが、ご教授お願いします。 (その他、実際のMT4口座選で、ここはオススメなどあれば教えてもらえるとうれしいです。)

  • メタトレーダー(MT4)にて半自動売買のソフトを作成しております。

    メタトレーダー(MT4)にて半自動売買のソフトを作成しております。 プログラミングに行き詰まっておりますので、どなたか経験のある方ご存じの方がいらっしゃいましたらご教授下さいませ。 下記の様に指値売り又は指値買いのプログラムを作っております。 これは、ある条件のトラップを仕掛け、希望の指値に達すると売り注文または買い注文を行います。 このトラップを複数仕掛けております。 このうち一つでも決済されれば、あるものは損切りもしくは決済を行ったり、注文取消を行ったりしたいのです。 例えば95円で売り注文、ストップロスが「95+0.6」,決済値が「95-0.3」。 double pr1 = 95;  //例えば95円 chiket1 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr1,3,pr1+0.6,pr1-0.3,"",123451,0,Red); chiket2 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr2,3,pr2+0.6,pr2-0.3,"",123452,0,Red); chiket3 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr3,3,pr3+0.6,pr3-0.3,"",123453,0,Red); chiket4 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr4,3,pr4+0.6,pr4-0.3,"",123454,0,Red); chiket5 = OrderSend(Symbol(),OP_SELLLIMIT,lots ,pr5,3,pr5+0.6,pr5-0.3,"",123455,0,Red); 質問1.この注文のうち、どれが決済されたかが確認出来る方法もしくは関数が知りたいのです。 マジックナンバーもしくはチケットナンバーで判明出来れば有りがたいのですが。 出来れば質問2もお願いします。 質問2.指値注文の自動売買は、ストラテジーテスターにてビジュアルモードで検証出来ないので検証する方法があれば知りたい。(指値に達しても約定しない) 以上宜しくお願い致します。

  • mt4のプログラムについて

    プログラムのコンパイルは問題ありませんが、エラー130が出てバックテストが出来ない状況です。 原因を教えて頂けますか。 int start() { if(OrderTotal()==0){ ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,StopLoss,TakeProfit,Magic,0,Color) } //ordertotalがなければ成り行きでbuyを建てる if(OrdersTotal()==1){ if(OrderSelect(ticket,SELECT_BY_POS,MODETRADES)=1){ ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,OrderOpenPrice()-0.20*Point,Slippage,StopLoss,TakeProfit,Magic,0Color) } //ordertotalが1で、且つ約定ポジションと未約定ポジションの合計が1の場合、orderopenpriceから-20pip下がった所にsellstopの注文を入れる。 } 以上の様にeaを制作したところ、buyは問題なく建ちましたが、sellの注文がエラー130となり注文が出来ない状態です。 ポイントは20離しておりますので、ポイント制限には該当しておりません。 何故stop値が無効となるのでしょうか?

  • MT4のOrderSendでエラーになります…

    以下のように、OrderSendで新規注文を行うプログラムを作成してみましたが、GetLastError()でエラー(4055)になってしまいます。 4055は、「カスタムインジケータエラー」とのことですが、どのように修正すればよいのか分かりません。 どうか、ご教示頂きたくよろしくお願い致します。 ちなみに、FXDD(デモ口座)のEURJPY(5分足)でテストしています。 bool EFlg=true; int start() { if(EFlg) { EAticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green); if(EAticket < 0 ) Alert("Order Failed #",GetLastError()); else Alert("OK!!"); EFlg = false; } return(0); }

  • 変数の定義もれ?

    稚拙なEAをつくってみました。変数が定義されていない箇所が一か所あるというエラーメッセージがでます。売りポジションのストップロスあたりのようなのですが、どこかわかりません。どなたかよろしくお願いいたします。(安易に聞くなと怒られそうですが、3日考えてもわかりません。よろしくお願いします。) ?????????????????????????????????????????????????????????????????????????? //パラメーターの設定// extern double Lots = 1.0; //取引ロット数 extern int Slip = 10; //許容スリッページ数 extern string Comments = ""; //コメント extern int TP =20 ; //利益確定ポイント数 extern int SL =15 ; //ストップロスポイント数 //変数の設定// int Ticket_L = 0; //買い注文の結果をキャッチする変数 int Ticket_S = 0; //売り注文の結果をキャッチする変数 int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数 double st_2_60 = 0; //60分足の2本前のバーのストキャスティクス double st_1_60 = 0; //60分足の1本前のバーのストキャスティクス double st_2_15 =0; //15分足の2本前のバーのストキャスティクス double st_1_15 =0; //15分足の1本前のバーのストキャスティクス double signal_2_60 =0; //60分足の2本前のバーのシグナル double signal_1_60 =0; //60分足の1本前のバーのシグナル double signal_2_15= 0; //15分足の2本前のバーのシグナル double signal_1_15= 0; //15分足の1本前のバーのシグナル int start() { st_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,2); st_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,0,1); st_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,2); st_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,0,1); signal_2_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,2); signal_1_60=iCustom(NULL,60,"Stochastic",5,3,3,0,100,1,1); signal_2_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,2); signal_1_15=iCustom(NULL,15,"Stochastic",5,3,3,0,100,1,1); //買いポジションの利益確定 OrderSelect(Ticket_L,SELECT_BY_TICKET); if( (OrderOpenPrice()+TP*Point<=Bid) &&(Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //売りポジションの利益確定 OrderSelect(Ticket_S,SELECT_BY_TICKET); if( (OrderOpenPrice()-TP*Point>=Ask) &&(Ticket_S!= 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S==1 ) {Ticket_S = 0;} } //買いポジションのストップロス OrderSelect(Ticket_L,SELECT_BY_TICKET); if( (OrderOpenPrice()-SL*Point>=Bid) &&(Ticket_L!=0 && Ticket_L!=-1)) { Exit_L=OrderClose(Ticket_L,Lots,Bid,Slip,Red); if(Exit_L==1){Ticket_L=0;}   //売りポジションのストップロス OrderSelect(Ticket_S,SELECT_BY_TICKET); if( (OrderOpenPrice()+SL*Point<=Ask) &&(Ticket_S != 0 && Ticket_S != -1)) { Exit_S=OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if(Exit_S==1){Ticket_S=0;} //買いポジションのエグジット if( st_1_15 <= 25 && Ticket_L != 0 && Ticket_L != -1) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } //売りポジションのエグジット if( st_1_15 >=75 && Ticket_S != 0 && Ticket_S != -1 ) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } //買いエントリー if( st_2_60 > 20 && st_1_60 > st_2_60 && st_1_60 < 70 && st_2_15 > 20 && st_1_15 > st_2_15 && st_1_15 < 70 && st_1_15 >= signal_1_15 && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } //売りエントリー if( st_2_60 < 80 && st_1_60 < st_2_60 && st_1_60 >30 && st_2_15 < 80 && st_1_15 <= st_2_15 && st_1_15 <= signal_1_15 && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); } // the end.

  • ★ MT4のEAで待ち時間を設定する ★

    いつもご質問に答えていただいてありがとうございます。 メタトレーダーのEAの自作に挑戦しているのですが うまく動作せず困っています。(注文が執行されない)。 EAの内容は、 ストップロスでポジションが無くなったあと、 5分間ウェイト時間をおいてから、 次の買いの条件になったら(BB下を割ったら) 買い注文を出す、というものです。 すいませんが何かヒントを教えてくださいませんでしょうか? Sleep関数を使ってもうまくいきませんでした… // ポジションチェック 無し if(CurrentPosition == -1){    if (BarCount != Bars) { BarCount = Bars; if (WaitTime != 0) WaitTime--; }   if(WaitTime <= 0)  {     //買いサイン      if(iClose(NULL,0,0) < iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,0)){       //買いポジション       Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(200*Point), Ask+(400*Point), "Buy", 0, 0, Blue);      //ストップロスかかったとこでWaitTimeを5分にセットする WaitTime = 5;  }   } }

  • MT4でのカウントダウン方式でのEAについて

    MT4初心者です。 サイバーエージェントMT4のデモトレードでEA作成にチャレンジしております。 EAのプログラムではストップロスの値幅とテイクプロフィットの値幅をexternでパラメーターに設定し、OrderSend関数の引数として代入していたのですが、サイバーエージェントではカウントダウン注文方式なので、エントリーの際にOrderSend関数でスリッページとストップロス、テイクプロフィットの値を0にしないとエントリーが出来ない事を知りました。 とりあえず、上記の値を0にしデモトレードをしてみたのですが、エントリーには成功しました。 ただ、エントリーは出来ても当然、指値・逆指値の注文が入らないので、エントリー後に注文を入れようと思い、OrderModfiyの関数を使ってみて下記の様なプログラムを組んでみたのですが、エントリー後もOCO注文は入りません。 MyOrderSendSL(OP_BUY, Lots, Ask, 0, 0, 0, COMMENT, MAGIC); OrderModify(OrderTicket(), 0, OrderOpenPrice()-SLpips*Point, OrderOpenPrice()+TPpips*Point, 0); 初心者の為、全くのおかど違いな事をしているのかも分からない状態です。 エントリー後、直ぐににオープンポジション(約定値)に対してのOCO注文(出来れば値幅をパラメーターとした注文)のプログラムの組み方をご存知の方がいらっしゃいましたら教えていただけますでしょうか。

  • メタトレーダー

    初歩的な質問ですみませんが、どなたか教えてください。メタトレーダーのEAプログラムについてです。 (1) エントリー時に移動平均線の傾きの角度を制限したいので下記のようにしました。 extern double MA_Period = 20; // MAの足数 extern double kaikatamuki = 40; //買いのMA逆傾き制限(%)必ず99以下で extern double urikatamuki = 40; //売りのMA逆傾き制限(%)必ず99以下で ~ ここに色々式がありまして・・・・ ~ //MA傾きの計算 ma1 = iMA(NULL, 0, MA_Period,0, MODE_SMA, PRICE_CLOSE, j); ma2 = iMA(NULL, 0, MA_Period,0, MODE_SMA, PRICE_CLOSE, j+1); katamuki1 = ma1/ma2*100; katamuki2 = ma2/ma1*100; //katamuki1 = ma1-ma2;←これは差を求めるために作っただけ //katamuki2 = ma2-ma1; ←これは差を求めるために作っただけ //オープンポジションの計算 int pos = CalculateCurrentOrders(); //売りシグナル if (pos>=0 && k==llb && katamuki1<kaikatamuki) { ClosePositions(); OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+TrailingStop1*Point,Bid-TakeProfit*Point,””,MAGIC,0,Red); return(0); } //買いシグナル if (pos<=0 && k==hhb && katamuki2<urikatamuki) { ClosePositions(); OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-TrailingStop1*Point,Ask+TakeProfit*Point,””,MAGIC,0,Blue); return(0); } しかし、compileはできたのですが、実際のバックテストでは約定しません。kaikatamukiとurikatamukiを100以上にすれば約定するのですが、理屈が反対になるのでダメです。また、大きい傾き時のみのエントリーを計画しているのですが、傾きが緩やかな時も約定してしまいます。何が間違っているのでしょうか?または、傾きの有る無いしか作れないのでしょうか? (2)上記にあるOrderSendのStopLossの所にTrailingStopを最初から適用すると約定しません。StopLossを入れると約定します。上記ではTrailingStop1となっていますが、1をつけなくてもダメでした。私としてはOrderSendで TrailingStop を入れて、ある一定の利益が出たらOrderModifyで新たな TrailingStopを設定したいと思っていました。これはダメなんでしょうか? (3)上記とは違いますが例えば、Supersignalの矢印が出てから何本目の足以内にMACDCrossが出たらエントリーというような、「これが成立してから足何本以内にこれが成立したら」が書けません。forexでstatic int barsAtStart;を見つけましたが、これまた動きません。 長々と申し訳ありません。よろしくお願いいたします。

  • MT4のEAがエントリーしません

    上向きの移動平均線をローソク足が下から抜けたら買いエントリーし、4本値すべて移動平均線の下にいったらイグジット、売りは逆というEAをiCutomの本を見ながら作ってみたのですが、ポンド円の一分足で半日稼働したけれど全くエントリーしませんでした。どこがわるいのでしょうか?宜しくお願いします。(以下が内容です)因みにコンパイルしてエラーはありませんでした。 // マジックナンバーの定義 #define MAGIC 5582 // パラメーターの設定// extern int MA_Period = 21; // 短期移動平均線の期間設定 extern int MA_Shift = 0; // 移動平均を右にシフトするバー数の設定 extern int MA_Method = 0; // 移動平均方法の設定 extern double Lots = 1.0; // 取引ロット数 extern int Slip = 100; // 許容スリッページ数 extern string Comments = " "; // コメント // 変数の設定// int Ticket_L = 0; // 買い注文の結果をキャッチする変数 int Ticket_S = 0; // 売り注文の結果をキャッチする変数 int Exit_L = 0; // 買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; // 売りポジションの決済注文の結果をキャッチする変数 double MA_2 = 0; double MA_1 = 0; int start() { MA_2 = iCustom(NULL,0,"Moving Averages",MA_Period,MA_Shift,MA_Method,0,2); MA_1 = iCustom(NULL,0,"Moving Averages",MA_Period,MA_Shift,MA_Method,0,1); // 買いポジションのエグジット if( MA_1 >= High[1] && ( Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } // 売りポジションのエグジット if( MA_1 <= Low[1] && ( Ticket_S != 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } // 買いエントリー if( MA_2 <= MA_1 && MA_1 > Open[1]&& MA_1 > Close[1] && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red); } // 売りエントリー if( MA_2 >= MA_1 && MA_1 < Open[1]&& MA_1 > Close[1] && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Blue); } return(0); }

  • 初心者です。ポジションが上手く決済されません。

    FastMaとSlowMaのGC・DCでポジションを持ちSL・TPで決済したいのですが 反対のポジションを持ったときに決済してしまいます。 どこがダメなのでしょうか? 初歩的なことだと思いますが、一週間悩んでも分りませんでした。 よろしくお願いします。 //| パラメーター extern int FastMA_Period = 4; extern int SlowMA_Period = 8; extern double Lots = 0.1; extern int Slippage = 3; extern int SLpips = 150; // 損切り値幅(pips) extern int TPpips = 80; // 利食い値幅(pips) //| ポジションを決済する void ClosePositions() { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break; if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()) continue; //オーダータイプのチェック if(OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White); break; } if(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White); break; } } } //| スタート関数 int start() { //バーの始値でトレード可能かチェック if(Volume[0]>1 || IsTradeAllowed()==false) return(0); //移動平均の計算 double FastMA1 = iMA(NULL,0,FastMA_Period,0,MODE_SMA,PRICE_CLOSE,1); double SlowMA1 = iMA(NULL,0,SlowMA_Period,0,MODE_SMA,PRICE_CLOSE,1); double FastMA2 = iMA(NULL,0,FastMA_Period,0,MODE_SMA,PRICE_CLOSE,2); double SlowMA2 = iMA(NULL,0,SlowMA_Period,0,MODE_SMA,PRICE_CLOSE,2); //買いシグナル if(FastMA2 <= SlowMA2 && FastMA1 > SlowMA1) { ClosePositions(); OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,0,"",MAGIC,0,Blue); return(0); } //売りシグナル if(FastMA2 >= SlowMA2 && FastMA1 < SlowMA1) { ClosePositions(); OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+SLpips*Point,0,"",MAGIC,0,Red); return(0); } return(0); }